使用cURL将文件上传到Nginx服务器

5

大家好,

我想通过cURL将本地文件上传到远程Nginx服务器。我已经使用upload模块和DAV模块从源代码构建了Nginx。在Nginx页面底部,有一个上传文件的示例表单。我不确定如何实现该表单,并且(多个)谷歌搜索没有提供有关通过cURL直接上传到Nginx的有用信息。

当前技术栈:

  • Nginx
  • Green Unicorn
  • Flask

在我尝试的所有不同方法中,以下是似乎最适合此任务的方法。

curl -X POST -F "image=@example.gif" http://54.226.64.199/upload

然而,响应效果不佳。

我也尝试了--uploade-file参数,但是收到的响应是405。根据我的阅读,上传只接受POST命令,而不是PUT,因此我得到了405的响应错误。

我不需要完整的解决方案(当然最好有!),只需要指向正确的方向即可。

非常感谢任何帮助。

编辑:抱歉我忘记包括我的 .conf 文件的一部分。

        location /upload {
        upload_store /tmp;
        #upload_pass @none;
        upload_store_access all:rw;
        upload_cleanup 400 404 499 500-505;

    }

同时打印出nginx的错误日志 - hanshenrik
嘿,长话短说,我之前做法错误了。我并不是通过Nginx上传文件,而是通过Flask上传的。 http://flask.pocoo.org/docs/1.0/patterns/fileuploads/ - Nashluffy
@Nashluffy:你能把你的发现发布为答案吗?我也在苦苦寻找解决方法。找不到用于向NGINX发送POST请求的cURL命令。 - abhinavkulkarni
1个回答

1
你可以通过将文件名指定到URL中来实现此操作,而无需使用任何外部模块:
location ~ "/upload/([0-9a-zA-Z-.]*)$" {
    alias     /storage/www/upload/$1;
    client_body_temp_path  /tmp/upload_tmp;
    dav_methods  PUT DELETE MKCOL COPY MOVE;
    create_full_put_path   on;
    dav_access             group:rw  all:r;
}

使用命令:curl -T example.gif http://54.226.64.199/upload/example.gif

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接