node.js - 使用 nginx 和 node.js 上传文件

标签 node.js image file-upload nginx

我正在尝试配置 nginx 来管理 node.js 应用程序的文件上传。 我已经遵循了这个教程:https://coderwall.com/p/swgfvw/nginx-direct-file-upload-without-passing-them-through-backend

我使用以下配置完成了它:

server {
    listen 80;

    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

    location /upload {
        auth_request               /upload/authenticate;
        limit_except POST          { deny all; }

        client_body_temp_path      /tmp/;
        client_body_in_file_only   on;
        client_body_buffer_size    128K;
        client_max_body_size       1000M;

        proxy_pass_request_headers on;
        proxy_set_header           X-FILE $request_body_file;
        proxy_set_body             off;
        proxy_redirect             off;
        proxy_pass                 http://localhost:3000/uploads;
    }

    location /upload/authenticate {
        internal;
        proxy_set_body off;
        proxy_pass http://localhost:3000/auth/isAuthenticated;
    }
}

我用Postman做了如下测试:

Upload post request

帖子请求:

POST/上传 HTTP/1.1 主机:本地主机 缓存控制:无缓存

----WebKitFormBoundaryE19zNvXGzXaLvS5C 内容处置:表单数据;名称=“图像”;文件名=“pic.jpg” 内容类型:图像/jpeg

----WebKitFormBoundaryE19zNvXGzXaLvS5C

它工作正常,nginx 将图像上传到/tmp 目录中。 问题是该文件被重命名为“0000000001”,当我手动将其重命名为“pic.jpg”并尝试打开它时,查看器提示“解释 JPEG 图像文件时出错(不是 JPEG 文件:以 0x2d 0x2d 开头)”。

当我运行文件命令(文件 pic.jpg)时,它返回:“pic.jpg:数据”。

最佳答案

你能检查一下Postman版本吗? 在我的环境中,Postman(v3.2.8)在请求方法上有“二进制”单选按钮。

根据博文,“clientbodyinfileonly”方法不兼容多部分数据,仅支持二进制数据上传。

因此请使用二进制模式重试请求(Postman 或其他方法,例如 XHR2)。

关于node.js - 使用 nginx 和 node.js 上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34557544/

相关文章:

javascript - 使用nodejs验证文件上传

php - SQL 查询出错,但数据库正在使用正确的信息进行更新

node.js - Angular HTTP 无法获得完整响应

node.js - 相对于当前文件目录的文件路径补全

node.js - NodeJS - OpenCV 错误 :- libopencv_calib3d. so.2.4:无法打开共享对象文件:没有这样的文件或目录

java - Android图像剥离和编辑/合并2张图片

javascript - 为什么这个onload函数不运行?

java - 图标图像 "error java.lang.NullPointerException"

javascript - 如何在使用 Angular-file-upload 上传之前修复 EXIF 方向

javascript - 在 AngularJS 中上传文件