HTTP, python size e upload file

di il
0 risposte

HTTP, python size e upload file

Ciao a tutti,

avrei bisogno sto utilizzando le HTTP API di transfernow (https://developers.transfernow.net/) per implementare una applicazione in Python che permetta di fare upload di file e poi memorizzare il link 
per il download delle risorse.


La domanda riguarda in dettaglio come gestire correttamente la request in Python fornendo la corretta dimensione di un file.

Il problema è il seguente, le API richiedono:
1) inizialmente di effettuare una HTTP POST (https://developers.transfernow.net/#create-a-new-transfer) tra cui viene indicato la size del file,
2) successivamente nel workflow ci sono diverse chiamate,
3) poi c'è un API per l'effettivo upload del file (https://developers.transfernow.net/#file-parts-upload),
4) succevviamente il completamento dell'upload (https://developers.transfernow.net/#complete-transfer-upload).

Un esempio molto semplice, creo un file ASCII con la semplice scritta: hello.
Se calcolo la dimension di questo file, es: 
os.stat(file_path).st_size ottengo come dimensione 5 e questa size viene passata nella chiamata al punto 1

Poi al punto 3, eseguo l'effettivo upload del file, ad esempio cosi:

files = {
   "resource": (file_name, open(file_path, "rb"), mimetype)
}

response = requests.request("PUT", upload_url, files=files)

tracciando la request ho ad esempio:
< Content-Length: 180
< Content-Type: multipart/form-data; boundary=08fc9fa3aa6283a9ffa2f46d6b8ad13d
<
< --08fc9fa3aa6283a9ffa2f46d6b8ad13d
Content-Disposition: form-data; name="resource"; filename="file1.txt"
Content-Type: text/plain

hello
--08fc9fa3aa6283a9ffa2f46d6b8ad13d--


il problema è il Content-Length: 180 perchè allo step 4 poi ricevo il seguente errore:
{"error":"File GpjwR4un does not have the right size in s3 (provided: 5, actual: 180","codes":[]}


Sapete come è possibile risolvere questo problema? Penso sia impossibile calcolare la size al punto 1 in 180 come fosse una chiamata http. Penso che bisogna agire 
al punto 3 in modo da passare il file con dimensione 5...però non saprei come fare.    

Ciao

Devi accedere o registrarti per scrivere nel forum
0 risposte