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

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Upload automatique d'un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Upload automatique d'un fichier

n°1892939
cimourdain
Posté le 09-06-2009 à 09:05:07  profilanswer
 

Bonjour a tous,
 
Voici la problématique que je rencontre: l'utilisateur fait une action avec un logiciel et celui-ci génère un fichier texte. Je veux récupérer ce fichier texte automatiquement pour l'uploader vers un script php par exemple en vue de mettre a jour une base de donnée. En plus de faire le fichier texte, le logiciel ouvre automatiquement un navigateur a la fin du processus.
 
La contrainte: l'utilisateur ne doit rien avoir a faire !, on ne peut donc pas dans la page web afficher un formulaire pour que l'utilisateur clic sur parcourir, choisisse le fichier et ensuite l'upload.
 
Je pensais faire un javascript qui onload de la page submit le formulaire mais le problème c'est qu'on ne peut pas donner de valeur a un champ input type="file". Ce qui se comprend assez bien car sinon n'importe quel site pourrait voler des fichiers aux visiteurs.
 
Y'a-t-il une façon de faire ce que je veux ? Au pire l'utilisateur accepte de faire juste un seul clic "simple" dans la page ouverte par le logiciel.

mood
Publicité
Posté le 09-06-2009 à 09:05:07  profilanswer
 

n°1892976
olivthill
Posté le 09-06-2009 à 09:51:39  profilanswer
 

Si ce logiciel est capable de créer un fichier texte, et de lancer le navigateur, alors il est très fort, et devrait aussi être capable de lancer FTP ou l'envoi d'un mail.

n°1892987
cimourdain
Posté le 09-06-2009 à 10:09:59  profilanswer
 

FTP je sais pas, mail a la limite mais c'est pas sur. Mais comment une application php peut-elle recevoir un mail ? (le but serait d'en traiter le contenu pour ensuite faire des insertions dans une DB).

n°1892996
pataluc
Posté le 09-06-2009 à 10:12:54  profilanswer
 

tu as moyen de modifier du coté de ton logiciel en amont la page web appelée? sinon, j'ai peur que tu ais répondu toi même à ta question:

cimourdain a écrit :

le problème c'est qu'on ne peut pas donner de valeur a un champ input type="file". Ce qui se comprend assez bien car sinon n'importe quel site pourrait voler des fichiers aux visiteurs

 

par contre si oui, eh bien ton logiciel peut lancer un wget (ou équivalent) en précisant le fichier à envoyer, et roulez jeunesse... http://www.google.fr/search?q=upload+wget

Message cité 1 fois
Message édité par pataluc le 09-06-2009 à 10:16:44
n°1893060
rufo
Pas me confondre avec Lycos!
Posté le 09-06-2009 à 10:56:10  profilanswer
 

Une appli php peut lire des mails en se connectant à une boîte mail vua imap ou pop3 (voir la fonction imap_open() : http://www.php.net/manual/fr/function.imap-open.php ). Je l'ai fait y'a pas longtemps avec une boîte sous Lotus Notes. Et pour envoyer un mail, y' a la fonction mail() et tu trouveras pleins de codes sources de class envoyant des mails avec des pièces jointes.
 
Après, pour envoyer un fichier automatiquement avec du javascript, essaye ce code sous Internet Explorer 6 :

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


 
C'est tiré d'un plugin que j'ai fait pour l'appli Astres (cf ma signature) et qui permet d'envoyer en post un fichier attaché via de l'ajax. Bon, tu laisses de côté le switch() avec "aow" et "knowledge" qui sont 2 modes de fonctionnement pour 2 formulaires différents (le plugin servant à ces 2 formulaires). L'idée de base réside dans le fait que le javascript peut lire octet par octet un fichier sur le hdd. Par contre, dans mon script, c'est l'utilisateur qui sélectionne le fichier... Mais je pense que ça vaut le coup de tester...


---------------
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°1893066
rufo
Pas me confondre avec Lycos!
Posté le 09-06-2009 à 10:57:59  profilanswer
 
n°1893159
cimourdain
Posté le 09-06-2009 à 13:35:27  profilanswer
 

pataluc a écrit :

tu as moyen de modifier du coté de ton logiciel en amont la page web appelée? sinon, j'ai peur que tu ais répondu toi même à ta question:


 

pataluc a écrit :


 
par contre si oui, eh bien ton logiciel peut lancer un wget (ou équivalent) en précisant le fichier à envoyer, et roulez jeunesse... http://www.google.fr/search?q=upload+wget


 
 
je suis pas sur d'avoir bien compris ce que tu voulais dire

n°1893170
pataluc
Posté le 09-06-2009 à 13:46:27  profilanswer
 

ce que je veux dire, c'est ca:
 
tu nous explique que ton logiciel machintruc génère un fichier texte et que tu veux l'envoyer à un script php. ma question est: as tu moyen de modifier le logiciel machintruc? si oui, tu peux faire en sorte qu'il envoie directement le fichier...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Upload automatique d'un fichier

 

Sujets relatifs
Opérations sur chaines dans un fichierrenseignement pour lancéer un fichier automatiquement tous les jours e
inserer du PHP dans un fichier XSLOuverture/lecture dans un fichier texte Access VBA
Erreur d'exécution '53': Fichier introuvablelire un fichier sur serveur protégé par mot de passe
Convertir un fichier .rtf en .pdfRestauration de fichier .bak ?
[java]Lecture d'un gros fichier texteafficher un fichier .txt dans une messagebox . possible ?
Plus de sujets relatifs à : Upload automatique d'un fichier


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