3

我在我的一个 django 项目中使用 curl 上传文件,它在 localhost 中运行良好,但是当我在远程服务器中托管项目时,它不起作用。

我正在从这个命令发送文件

curl -i --form docfile=@/path_to_file http://example.com/process-file

在views.py中,我将此文件处理为

def process_file(request):
    if request.method != 'POST':
        return HttpResponseNotAllowed('Only POST Method')

    docfile = request.FILES['docfile']

    output = main(0, docfile) # output is json object
    return HttpResponse(output,content_type = "application/json")

当我在本地机器上运行时,这工作得很好,但是用 curl 返回发送 POST 请求到远程服务器

HTTP/1.1 100 Continue

什么也不做。文件正在上传。我应该怎么办。

谢谢

编辑 1:我尝试从其他视图方法发送一些其他 HttpResponse(文件名),它工作正常,但是当我处理文件时,它只是发送 HTTP/1.1 100 Continue

4

1 回答 1

1

我不确切知道如何在您的项目中解决此问题,但看起来您curl正在发送Expect: 100-continue标头,提示远程服务器发回HTTP/1.1 Continue. curl等待取回该响应,然后上传表单。你说curl返回HTTP/1.1 100 Continue然后“什么都不做”,但它实际上应该在收到它之后上传,所以也许你使用的任何回调都没有返回那个。我会尝试使用 Wireshark 来查看它。

于 2015-08-08T01:42:33.943 回答