Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1603 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Uploader un fichier sans passer par Parcourir

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Uploader un fichier sans passer par Parcourir

n°1629175
hal9100
Posté le 23-10-2007 à 11:20:38  profilanswer
 

Bonjour,
 
Je voudrais savoir comment faire pour créer un script qui uploade automatiquement un fichier situé dans un répertoire précis, donc sans passer par le bouton parcourir créé automatiquement avec un <input type=file>.
Au besoin, je suis prêt à ajouter plusieurs boutons de confirmation mais je veux que n'importe quel handicapé de l'informatique puisse m'envoyer son fichier sans difficulté.

mood
Publicité
Posté le 23-10-2007 à 11:20:38  profilanswer
 

n°1629178
FlorentG
Posté le 23-10-2007 à 11:22:43  profilanswer
 

On ne peut pas pour des raisons de sécurité. Ca voudrait dire qu'on pourrait uploader un fichier arbitraire sans intervention de l'utilisateur, autrement dit bonjour le bordel...


Message édité par FlorentG le 23-10-2007 à 11:22:49
n°1629182
flo850
moi je
Posté le 23-10-2007 à 11:26:39  profilanswer
 

perdu , ca va pas etre possible en javascript n i en php

n°1629366
hal9100
Posté le 23-10-2007 à 15:23:26  profilanswer
 

C'est possible en quoi alors ?
Sinon moi je veux bien une intervention de l'utilisateur mais pas un parcourir, c'est trop fastidieux pour un béotien. Par exemple, mettre une valeur par défaut dans le champ parcourir, ce serait pas possible ?

n°1629371
anapajari
s/travail/glanding on hfr/gs;
Posté le 23-10-2007 à 15:27:55  profilanswer
 

en java ou via un activeX ça doit être jouable

n°1629389
FlorentG
Posté le 23-10-2007 à 15:38:10  profilanswer
 

hal9100 a écrit :

Sinon moi je veux bien une intervention de l'utilisateur mais pas un parcourir, c'est trop fastidieux pour un béotien.?


Bof... C'est quand-même pas compliqué, ils utilisent bien des trucs styles word ou excel et la boîte de dialogue "ouvrir"... Même si je suis d'accord qu'il faut rester simple et faire gaffe aux grands-débutants, vouloir éviter la sélection d'un fichier est strictement impossible.
 
Sinon, autant carrément utiliser une reconnaissance vocale, les pauvres, imaginent s'ils doivent utiliser une souris, c'est trop compliqué :D :D :D

n°1630008
hal9100
Posté le 24-10-2007 à 12:04:00  profilanswer
 

Pas de souris, c'est sur pda. :)

n°1649012
drumgirl
Posté le 26-11-2007 à 17:02:36  profilanswer
 

Alors là j'en reviens pas, quelqu'un qui a exactement le même problème que moi !!!  :ouch:  
hal9100 , j'aurai pu écrire ton message...
 
Bon, allons au but de mon message , as-tu trouvé une solution ??  :??:  
Je dois aussi pré-remplir mon champ upload pour des raisons identiques aux tiennes, ou me positionner directement là ou il faut quand je fais "parcourir".
 
Help ... :cry:

n°1649033
PierreC
Posté le 26-11-2007 à 17:23:24  profilanswer
 

je forme à la sécurité informatique de temps en temps et j'ai testé ce genre de fonctionnalité attaque il y a à peine une semaine,  
 
avec ce code :  
 

Code :
  1. <form name="frm" >
  2.         <input type="file" name="doc" />
  3. </form>
  4. <script>
  5.          document.frm.doc.value="/etc/passwd";
  6. </script>


 
 
et dans la console d'erreur de firefox :  
 
Erreur : uncaught exception: [Exception... "Security error"  code: "1000" nsresult: "0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)"  location: "file:///home/kaspa/tmp_ici/index.html Line: 12"]
 
ca à le mérite d'etre clair :  :sarcastic:


Message édité par PierreC le 26-11-2007 à 17:27:54

---------------
Du tofu en Alsace : www.tofuhong.com
n°1854936
Kiosquec
Posté le 25-02-2009 à 11:54:12  profilanswer
 

Problème du même genre : je veux uploader un fichier précis, celui-là et pas un autre (par exemple  toto.txt). Je ne veux pas que l'utilisateur soit obligé de parcourir ses répertoires. Il clique sur le bouton submit et le fichier est envoyé au serveur.
Il est vrai que le procédé peut être dangereux, par exemple pour piquer des infos. Il peut également être détourné pour envoyer du code pourri au serveur. De toute façon, l'upload présente des problèmes de sécurité.

mood
Publicité
Posté le 25-02-2009 à 11:54:12  profilanswer
 

n°1854940
rufo
Pas me confondre avec Lycos!
Posté le 25-02-2009 à 12:11:32  profilanswer
 

J'ai pas fais le tests avec un input de type file en hidden et en le remplissant avec un chemin de fichier via du JS mais j'ai eu une problématique y'a quelques temps pour le soft Astres (cf ma signature). Dans l'IHM de base, pour attacher un fichier à une demande, l'utilisateur devait cliquer, à partir de la fiche de la demande, sur un bouton qui ouvrait une nouvelle page où y'avait le formulaire de téléchargement. Une fois le fichier téléchargé, il devait refermer cette fenêtre et rafrachir la fiche de sa demande pour voir le fichier attaché. Il devait réitérer la manip autant de fois que de fichiers à attacher. Pour améliorer l'ergonomie, je me suis dit qu'un plugin en JS (avec de l'ajax) + un peu de PHP qui viendrait, à la volée, modifier directement l'IHM existante et viendrait coller dans la fiche de la demande le formulaire de téléchargement serait une bonne idée.
Je code mon truc et là, le drame, ça fonctionne pas car en cherchant sur le web, je m'apperçois qu'Ajax n'accepte pas un enctype de type multipart/form-data :(
Dégoûté d'avoir fait tout ça pour rien, je poursuis ma recherche des fois fois qu'il y aurait un moyen de contourner le pb et je tombe sur ce bout de code :

Code :
  1. function uploadUploadFilePlugin() {
  2.        
  3.         UploadFilePluginFilename = document.getElementById('fFilename').value;
  4.         UploadFilePluginMytext = document.getElementById('sFileDescription').value;
  5.         UploadFilePluginAccessCheckboxes = document.getElementById('hidchkAowLevelID').value;
  6.      
  7.         // request local file read permission
  8.         try {
  9.                 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect" );
  10.         } catch (e) {
  11.                 alert("Vous n'avez pas la permission de lire le fichier!" );
  12.         }
  13.         // open the local file
  14.         var file = Components.classes["@mozilla.org/file/local;1"]
  15.                 .createInstance(Components.interfaces.nsILocalFile);
  16.         file.initWithPath( UploadFilePluginFilename );
  17.         stream = Components.classes["@mozilla.org/network/file-input-stream;1"]
  18.                 .createInstance(Components.interfaces.nsIFileInputStream);
  19.         stream.init(file,        0x01, 00004, null);
  20.         var bstream =  Components.classes["@mozilla.org/network/buffered-input-stream;1"]
  21.                 .getService();
  22.         bstream.QueryInterface(Components.interfaces.nsIBufferedInputStream);
  23.         bstream.init(stream, 1000);
  24.         bstream.QueryInterface(Components.interfaces.nsIInputStream);
  25.         UploadFilePluginBinary = Components.classes["@mozilla.org/binaryinputstream;1"]
  26.                 .createInstance(Components.interfaces.nsIBinaryInputStream);
  27.         UploadFilePluginBinary.setInputStream (stream);
  28.         // start AJAX file upload in 1 second
  29.         window.setTimeout("ajax_uploadUploadFilePlugin()", 1000);
  30. }
  31. function ajax_uploadUploadFilePlugin() {
  32.         // request more permissions
  33.         try {
  34.             netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect" );
  35.         } catch (e) {
  36.             alert("Vous n'avez pas la permission de lire le fichier!" );
  37.         }
  38.         UploadFilePluginHttp_request = false;
  39.         if (window.XMLHttpRequest) {
  40.             UploadFilePluginHttp_request = new XMLHttpRequest();
  41.         } else if (window.ActiveXObject) {
  42.             UploadFilePluginHttp_request = new ActiveXObject('Microsoft.XMLHTTP');
  43.         } else {
  44.             alert('Votre navigateur ne supporte pas XMLHttpRequest!');
  45.             return false;
  46.         }
  47.         // prepare the MIME POST data
  48.         var boundaryString = 'capitano';
  49.         var boundary = '--' + boundaryString;
  50.         var MyForm;
  51.         var requestbody = '';
  52.         var url = '';
  53.         switch(UploadFilePluginMode) {
  54.             case 'Knowledge':
  55.                 break;
  56.             case 'Aow':
  57.             default:
  58.                 requestbody = boundary + 'n'
  59.                 + 'Content-Disposition: form-data; name="sFileDescription"' + 'n'
  60.                 + 'n'
  61.                 + UploadFilePluginMytext + 'n'
  62.                 + 'n'
  63.                 + boundary + 'n'
  64.                 + 'Content-Disposition: form-data; name="hidchkAowLevelID"' + 'n'
  65.                 + 'n'
  66.                 + UploadFilePluginAccessCheckboxes
  67.                 + 'n'
  68.                 + boundary + 'n'
  69.                 + 'Content-Disposition: form-data; name="fFilename"; filename="'
  70.                 + UploadFilePluginFilename + '"' + 'n'
  71.                 + 'Content-Type: application/octet-stream' + 'n'
  72.                 + 'n'
  73.                 + escape(UploadFilePluginBinary.readBytes(UploadFilePluginBinary.available()))
  74.                 + 'n'
  75.                 + boundary;
  76.                 MyForm = $('AowFiles').getElementsByTagName('form')[0];
  77.                 url = MyForm.action;
  78.                 break;
  79.         }
  80.         // do the AJAX request
  81.         UploadFilePluginHttp_request.onreadystatechange = requestDoneUploadFilePlugin;
  82.         UploadFilePluginHttp_request.open('POST', url, true);
  83.         UploadFilePluginHttp_request.setRequestHeader("Content-type", "multipart/form-data;
  84.                 boundary="" + boundaryString + """ );
  85.         UploadFilePluginHttp_request.setRequestHeader("Connection", "close" );
  86.         UploadFilePluginHttp_request.setRequestHeader("Content-length", requestbody.length);
  87.         UploadFilePluginHttp_request.send(requestbody);
  88. }
  89. function requestDoneUploadFilePlugin()
  90. {
  91.      if (UploadFilePluginHttp_request.readyState == 4 && UploadFilePluginHttp_request.status == 200) {
  92.           switch(UploadFilePluginMode) {
  93.              case 'Knowledge':
  94.                  break;
  95.              case 'Aow':
  96.              default:
  97.                  if (UploadFilePluginHttp_request.responseText.indexOf('ErrorMsg', 0) != -1) {
  98.                      alert("Le fichier n'a pu être attaché à la demande!" );
  99.                  } else {
  100.                      var MyForm = $('AowFiles').getElementsByTagName('form')[0];
  101.                      MyForm.reset();
  102.                      var UploadFilePluginAreaListFiles = $('AowFilesList').getElementsBySelector('td.AowFilesFrame')[0].getElementsByTagName('td')[0];
  103.                      UploadFilePluginAreaListFiles.innerHTML = UploadFilePluginHttp_request.responseText;
  104.                  }
  105.                  break;
  106.           }
  107.      }
  108. }


Pour firefox (v2.x.x.x, pas testé sur la 3), faut modifier une option de sécurité dans son profil pour que ça marche. Pour IE6, y'a rien à faire, ça marche tout seul.  
Donc je serais pas aussi catégorique que vous sur l'impossibilité de la chose...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1854941
rufo
Pas me confondre avec Lycos!
Posté le 25-02-2009 à 12:15:50  profilanswer
 

Pour compéter ma réponse, voici qq sites intéressants :
http://www.captain.at/ajax-file-upload.php (là où j'ai pompé mon code il me semble)
 
https://developer.mozilla.org/en/Co [...] e_I%2F%2FO


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1855073
Kiosquec
Posté le 25-02-2009 à 14:39:24  profilanswer
 

Négatif pour Ajax : le client est un Pocket PC, qui ne comprend rien à Ajax. Alors à part envoyer le fichier par mail, pour l'instant je ne vois pas trop de solutions.
 
Une solution à peu près acceptable passerait par l'upload standard : un input de type file avec le paramètre enctype="multipart/form-data". Cela affiche une liste des fichiers disponibles, mais sans filtrage des types de fichiers. Il faudrait pouvoir poser un filtre sur le nom des fichiers visibles des façon à ne pas envoyer n'importe quoi (qui sera refusé par le serveur via le programme upload.php, mais ce n'est pas une raison pour envoyer des fichiers au hasard).
La question devient donc : comment filtrer les fichiers proposés à l'upload ?


Message édité par Kiosquec le 25-02-2009 à 15:19:49
n°1855138
rufo
Pas me confondre avec Lycos!
Posté le 25-02-2009 à 15:58:16  profilanswer
 

j'avais pas vu ton 2ième message disant que c'était sur pda. Donc c'est mort en html/JS :/ Par contre, y'a pas des API en java pour les PDA? Parce que tu pourrais faire un programme en java (ou en C/C++ après tout). dans ton 1er message, t'as juste parlé de script, mais c'est pas forcément un script en techno web finalement...


Message édité par rufo le 25-02-2009 à 16:00:23

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Uploader un fichier sans passer par Parcourir

 

Sujets relatifs
Stdou redirigé vers un fichier mais quand meme affiché sur la console?Erreur: undefined reference to `seek' (Modification fichier bmp)
Logoter automatiquemet des images uploader...[PHP] Importer un fichier XML dans base MYSQL
Include un fichier php dans un different site sur le meme serveurfichier *.HTA, autodétection de la lettre du lecteur cd
Passer un évènement en paramètre de fonctionNom de fichier au téléchargement
[CSS? JavaScript? Paint?]J'vais sûrement passer pour un con mais...PB de download de fichier sur serveur distant.
Plus de sujets relatifs à : Uploader un fichier sans passer par Parcourir


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR