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