EmileCadorel / struts-d

Free, open-source framework for creating elegant D web applications.
2 stars 0 forks source link

Upload de fichier via Post Request #5

Closed TheNawaKer closed 8 years ago

TheNawaKer commented 8 years ago

Afin que le serveur puisse recevoir et écrire un fichier, nous devons implementer le système d'upload. Pour cela, il faut utilisé les données POST. Afin d'informer le serveur de la reception d'un fichier, on doit structurer la requête de la manière suivante:

POST /home/uploadfiles HTTP/1.1
Content-Type: multipart/form-data; boundary=---------------------------7d81b516112482
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64)
Content-Length: 324

-----------------------------7d81b516112482
Content-Disposition: form-data; name="file"; filename="\\SERVER\Users\Scott\Documents\test.txt"
Content-Type: text/plain

foo
-----------------------------7d81b516112482
Content-Disposition: form-data; name="submit"

Submit
-----------------------------7d81b516112482--

autre exemple:

Content-Type: multipart/form-data;boundary=SOME_BOUNDARY

--SOME_BOUNDARY
content-disposition: form-data;name="textfield"
content-type: text/plain;charset=UTF-8

value of textfield here
--SOME_BOUNDARY
content-disposition: form-data;name="filefield";filename="some.ext"
content-type: application/octet-stream

binary file content here

--SOME_BOUNDARY--

http://stackoverflow.com/questions/19954287/how-to-upload-file-to-server-with-http-post-multipart-form-data https://www.ietf.org/rfc/rfc1867.txt

Content-Length: xxxx

cette ligne contient la taille totale du body de la requête (si plusieurs fichiers, il faut cumuler leur taille

filename="file2.gif"

nom du fichier uploader (nom côté client)

Content-type: image/gif

type du fichier (format)

Content-Transfer-Encoding: binary

Méthode d'écriture dans la requête du fichier

name="textfield"

nom du fichier (côté serveur) => renommage par l'utilisateur

EmileCadorel commented 8 years ago

Pour ce qui est de l'envoi de fichier sans changement de boundary en cours, ca fonctionne. Le nom du fichier et le filename sont stocker dans les content-disp de HttpFile. 3fcbbf779032e8f5e78e19458369239af5bfcaeb