繁体   English   中英

python 根据请求发送图像 url

[英]python send image url on requests

usertoken = requests.request("GET", "http://127.0.0.1:8000/en/get-user-by-email?email={}".format("soubhagyakumar666@gmail.com"))
usertoken = usertoken.json()["user"]["token"]

url = "http://127.0.0.1:8000/en/update-project-thumbnail"
payload = {
    "project_id": 6885
}

files=[
    ('project_image',('{}'.format("_0005_MainCam_42.png"),
    'https://d3lwp4d5yh6xdg.cloudfront.net/static/artwork_project/6886/_0005_MainCam_42.png','rb', 'image/jpeg')),
]
headers = {
    'Authorization': 'Token '+ usertoken
}

response = requests.request("PUT", url, headers=headers, data=payload, files=files)
print(response.status_code, ":status_code")

在这里,我通过请求发送图像。 但是,我得到了错误。 我必须通过 url 发送图像可能吗?

    File "/Users/soubhagyapradhan/Desktop/upwork/africa/backend/env/lib/python3.8/site-packages/requests/models.py", line 317, in prepare
        self.prepare_body(data, files, json)
    File "/Users/soubhagyapradhan/Desktop/upwork/africa/backend/env/lib/python3.8/site-packages/requests/models.py", line 505, in prepare_body
        (body, content_type) = self._encode_files(files, data)
    File "/Users/soubhagyapradhan/Desktop/upwork/africa/backend/env/lib/python3.8/site-packages/requests/models.py", line 165, in _encode_files
        rf = RequestField(name=k, data=fdata, filename=fn, headers=fh)
    File "/Users/soubhagyapradhan/Desktop/upwork/africa/backend/env/lib/python3.8/site-packages/urllib3/fields.py", line 155, in __init__
        self.headers = dict(headers)
    ValueError: dictionary update sequence element #0 has length 1; 2 is required
    ERROR 2021-05-19 11:47:06,121 basehttp 16077 123145380831232 "GET /en/signup H

问题出在下面的代码上:

response = requests.request("PUT", url, headers=headers, data=payload, files=files)

文件(变量值)需要是字典数据结构,如图所示:

correct_file={'file':("project_image ( {0})".format("_0005_MainCam_42.png"), 
                      open('out.png'
                           , 'rb'),'image/png')} # replace out.png with your file path

所以请求将如下所示:

response = requests.request("PUT", url, headers=headers, data=payload, files=correct_file)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM