variable template pass form example python python-3.x curl python-requests wechat

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?