Flask code -
@app.route('/messages', methods = ['POST'])
def api_message():
if request.headers['Content-Type'] == 'text/plain':
return "Text Message: " + request.data
elif request.headers['Content-Type'] == 'application/json':
f = open(filename,'r')
l = f.readlines()
f.close()
return len(l)
在跑步时,我收到错误 -
curl -H "Content-Type:application/json" -X POST http://127.0.0.1:5000/messages --data filename=@hello.json
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p>
我是否访问了curl param错误(文件名)?或者我以错误的方式发送文件?
另外Upload a file to a python flask server using curl
尝试做
f = request.files['filename']
仍然,同样的错误。
答案 0 :(得分:2)
您的curl
命令代码正在执行的操作是读取文件hello.json
并将其放入请求正文中。 (如果您需要将大量JSON发送到服务器,此功能实际上非常有用。)
通常在application/json
请求中,您将JSON作为请求的正文发送,因此可能您想要的内容。您可以使用request.get_json将此数据作为Python字典获取。
如果您要上传实际文件(例如上传图片),您需要多部分表单编码,告诉curl通过-F
参数发送。 (另见:SO答案:https://stackoverflow.com/a/12667839/224334)。