【发布时间】:2016-12-23 19:06:06
【问题描述】:
我想将一个文件从 python3 客户端发布到cherrypy。我正在使用请求库。 我的客户代码:
import requests
url = 'http://127.0.0.1:8080/upload'
files = {'file.zip': open('file.zip', 'rb')}
r = requests.post(url, files=files)
我的服务器代码:
import os
import tempfile
import shutil
import cherrypy
config = {
'global' : {
'server.socket_host' : '127.0.0.1',
'server.socket_port' : 8080,
'server.thread_pool' : 8,
'server.max_request_body_size' : 0,
'server.socket_timeout' : 60
}
}
class App:
@cherrypy.config(**{'response.timeout': 3600})
@cherrypy.expose()
def upload(self):
'''Handle non-multipart upload'''
destination = os.path.join('/home/uvv/upload')
with open(destination, 'wb') as f:
shutil.copyfileobj(cherrypy.request.body, f)
return 'Okay'
if __name__ == '__main__':
cherrypy.quickstart(App(), '/', config)
服务器返回错误:
127.0.0.1 - - [17/Aug/2016:11:38:49] "POST /upload HTTP/1.1" 400 2083 "" "python-requests/2.10.0"
【问题讨论】:
-
这不是您发布的错误,而是日志条目。什么是 HTTP 响应正文?附言尝试在上传处理程序的开头添加日志以查看它是否被调用。
-
P.P.S.尝试先上传小文件
-
并检查您是否有适当的权限从cherrypy应用程序写入
/home/uvv/upload文件 -
权限:a+rwx。文件没有上传
-
那么响应正文是什么?
标签: python-3.x upload cherrypy