<blockquote>
<p>@Mike Tung</p>
<p>...</p>
<p>You can make your life a bit easier by using requests</p>
<p>...</p>
</blockquote>
<p><strong>如何将文件传递给请求<code>json</code>kwarg?作为文件处理?还是绳子?</strong></p>
<p>当我尝试这个的时候</p>
<pre><code>import requests
url = 'http://localhost:5000/tests'
data = {
'icons': [
open('/home/test/git-projects/test.com/backend/fixtures/media/test1.jpg').read(), # If I pass the handle, it fails as well.
open('/home/test/git-projects/test.com/backend/fixtures/media/test2.jpg').read()
]
}
r = requests.post(url, json=data)
/home/test/venvs/test/bin/python2.7 /home/test/git-projects/test.com/backend/__main__.py
/home/test/venvs/test/local/lib/python2.7/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.pymongo is deprecated, use flask_pymongo instead.
.format(x=modname), ExtDeprecationWarning
/home/test/venvs/test/local/lib/python2.7/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.sentinel is deprecated, use flask_sentinel instead.
.format(x=modname), ExtDeprecationWarning
Traceback (most recent call last):
File "/home/test/git-projects/test.com/backend/__main__.py", line 43, in <module>
r = requests.post(url, json=data)
File "/home/test/venvs/test/local/lib/python2.7/site-packages/requests/api.py", line 109, in post
return request('post', url, data=data, json=json, **kwargs)
File "/home/test/venvs/test/local/lib/python2.7/site-packages/requests/api.py", line 50, in request
response = session.request(method=method, url=url, **kwargs)
File "/home/test/venvs/test/local/lib/python2.7/site-packages/requests/sessions.py", line 451, in request
prep = self.prepare_request(req)
File "/home/test/venvs/test/local/lib/python2.7/site-packages/requests/sessions.py", line 382, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "/home/test/venvs/test/local/lib/python2.7/site-packages/requests/models.py", line 307, in prepare
self.prepare_body(data, files, json)
File "/home/test/venvs/test/local/lib/python2.7/site-packages/requests/models.py", line 428, in prepare_body
body = json_dumps(json)
File "/home/test/venvs/test/local/lib/python2.7/site-packages/simplejson/__init__.py", line 380, in dumps
return _default_encoder.encode(obj)
File "/home/test/venvs/test/local/lib/python2.7/site-packages/simplejson/encoder.py", line 275, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/home/test/venvs/test/local/lib/python2.7/site-packages/simplejson/encoder.py", line 357, in iterencode
return _iterencode(o, 0)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xff in position 0: invalid start byte
Process finished with exit code 1
</code></pre>