requests headers form example delete data python file-upload python-requests

headers - requests request python



Python solicita la carga de archivos (1)

Estoy realizando una tarea simple de cargar un archivo usando la biblioteca de solicitudes de Python. Busqué Stack Overflow y nadie parecía tener el mismo problema, a saber, que el servidor no recibió el archivo:

import requests url=''http://nesssi.cacr.caltech.edu/cgi-bin/getmulticonedb_release2.cgi/post'' files={''files'': open(''file.txt'',''rb'')} values={''upload_file'' : ''file.txt'' , ''DB'':''photcat'' , ''OUT'':''csv'' , ''SHORT'':''short''} r=requests.post(url,files=files,data=values)

Estoy llenando el valor de la palabra clave ''upload_file'' con mi nombre de archivo, porque si lo dejo en blanco, dice

Error - You must select a file to upload!

Y ahora me sale

File file.txt of size bytes is uploaded successfully! Query service results: There were 0 lines.

Lo cual aparece solo si el archivo está vacío. Así que estoy estancado en cuanto a cómo enviar mi archivo con éxito. Sé que el archivo funciona porque si voy a este sitio web y llenó manualmente el formulario, devuelve una buena lista de objetos coincidentes, que es lo que busco. Realmente apreciaría todos los consejos.

Algunos otros hilos relacionados (pero que no responden a mi problema):


Si upload_file está destinado a ser el archivo, use:

files = {''upload_file'': open(''file.txt'',''rb'')} values = {''DB'': ''photcat'', ''OUT'': ''csv'', ''SHORT'': ''short''} r = requests.post(url, files=files, data=values)

y las requests enviarán un cuerpo de POST de múltiples partes con el campo upload_file establecido en el contenido del archivo file.txt .

El nombre de archivo se incluirá en el encabezado mime para el campo específico:

>>> import requests >>> open(''file.txt'', ''wb'') # create an empty demo file <_io.BufferedWriter name=''file.txt''> >>> files = {''upload_file'': open(''file.txt'', ''rb'')} >>> print(requests.Request(''POST'', ''http://example.com'', files=files).prepare().body.decode(''ascii'')) --c226ce13d09842658ffbd31e0563c6bd Content-Disposition: form-data; name="upload_file"; filename="file.txt" --c226ce13d09842658ffbd31e0563c6bd--

Tenga en cuenta el parámetro filename="file.txt" .