2013-02-19 15 views
10

Ho bisogno di estrarre upload da http-trafic. Come potrebbe farlo? Prima di tutto, il metodo di richiesta sarà POST. In secondo luogo, ci sarà un campo di intestazione Content-Type. Non voglio estrarre dati formulari, ma caricare come allegati di posta.Contenuto del tipo di contenuto all'interno di una richiesta HTTP durante il caricamento del contenuto?

+0

Quello che ho notato: Mime-Type spesso è 'multipart/form-data;' Ma davvero non ho alcuna esperienza a causa di questo. Non capisco perché questa domanda sia downvoted. – user1826831

risposta

16

Il tipo di contenuto è per specificationmultipart/form-data.

Questo è un tipo di contenuto speciale che può essere visualizzato come sotto-richieste multiple in un'unica grande richiesta. Ognuna di queste sub-richieste (un elemento form-data) ha il proprio set di intestazioni. Il tipo di contenuto dei dati effettivi è lì dentro.

Ecco un esempio di come apparire come con 1 campo normale e 1 campo File (in termini HTML, quando si utilizza <input name="textfield"><input type="file" name="filefield">):

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-- 

Per quanto riguarda l'analisi e l'estrazione di questi dati, praticamente ogni linguaggio di programmazione ha incorporato/API di terze parti per questo. Dato che non hai detto nulla su quale stai usando, è impossibile dare una risposta mirata. Nel caso, ad esempio, di Java, si tratterebbe della libreria di terze parti Apache Commons FileUpload o quando si utilizza Servlet 3.0, il metodo request.getPart() fornito dall'API.

+0

Sto usando C# per rendermene conto. Ho le informazioni memorizzate in un array di byte. – user1826831

0

Se (e io in nessun modo sto dicendo che questo è il modo corretto) che si desidera solo per salvare i dati da un array di byte, si dovrebbe guardare a come leggere il corpo POST a: Reading POST body with bottle.py Leggendo i dati e poi creare un nuovo file dovrebbe fare il trucco.

Problemi correlati