template - Cargar imagen usando datos de formulario POST en solicitudes Python
send form flask (5)
Estoy trabajando con las API de WeChat ... aquí tengo que cargar una imagen en el servidor de WeChat usando esta API http://admin.wechat.com/wiki/index.php?title=Transferring_Multimedia_Files
url = ''http://file.api.wechat.com/cgi-bin/media/upload?access_token=%s&type=image''%access_token
files = {
''file'': (filename, open(filepath, ''rb''),
''Content-Type'': ''image/jpeg'',
''Content-Length'': l
}
r = requests.post(url, files=files)
No puedo publicar datos
De wechat api doc:
curl -F [email protected] "http://file.api.wechat.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE"
Traduzca el comando anterior a python:
import requests
url = ''http://file.api.wechat.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE''
files = {''media'': open(''test.jpg'', ''rb'')}
requests.post(url, files=files)
Enfrenté un problema similar cuando quería publicar un archivo de imagen en una API de descanso de Python (aunque no en la API de Wechat). La solución para mí fue usar el parámetro ''datos'' para publicar el archivo en datos binarios en lugar de ''archivos''. Solicita referencia de API
data = open(''your_image.png'',''rb'').read()
r = requests.post(your_url,data=data)
Espero que esto funcione para tu caso.
Para que Rest API cargue imágenes de host a host:
import urllib2
import requests
api_host = ''https://host.url.com/upload/''
headers = {''Content-Type'' : ''image/jpeg''}
image_url = ''http://image.url.com/sample.jpeg''
img_file = urllib2.urlopen(image_url)
response = requests.post(api_host, data=img_file.read(), headers=headers, verify=False)
Puede usar la opción de verificación establecida en False para omitir la verificación SSL para las solicitudes HTTPS.
Usa este fragmento
import os
import requests
url = ''http://host:port/endpoint''
with open(path_img, ''rb'') as img:
name_img= os.path.basename(path_img)
files= {''image'': (name_img,img,''multipart/form-data'',{''Expires'': ''0''}) }
with requests.Session() as s:
r = s.post(url,files=files)
print(r.status_code)
import requests
image_file_descriptor = open(''test.jpg'', ''rb'')
filtes = {''media'': image_file_descriptor}
url = ''...''
requests.post(url, files=files)
image_file_descriptor.close()
No olvide cerrar el descriptor, evita errores: ¿es importante cerrar archivos explícitamente?