【问题标题】:Dropzone.js status is pending and not uploading a fileDropzone.js 状态为待处理且未上传文件
【发布时间】:2015-09-02 18:42:05
【问题描述】:

我在后端使用Multer 在前端处理文件上传和 Dropzone.js。当我使用Postman 测试我的后端代码时,一切都很好,但是当我使用 Dropzone 时,状态为挂起且文件未上传。然后等待 4 分钟后出现超时错误。

我明确表示使用 POST 而不是 PUT 并立即处理文件上传队列。

method: "post"
autoProcessQueue: true

我不知道 Dropzone.js 是否有我遗漏的选项或我的后端代码有问题

这是我处理文件上传的节点代码。

var multer  = require('multer');
app.use(multer({ dest: './uploads/'}));

app.post("/attachments/:code", function (req, res, next){
    console.log("Posted Files: " + req.files);
    console.log("Posted Codes: " + req.params.code);
    res.status(200).send("Done");
});

app.get("/attachments/:code", function (req, res, next){
    res.status(200);
});

更新:

这是成功上传文件的邮递员请求的标头:

Accept:*/*
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Content-Length:8414633
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryuBBzCAdVgFBBCHmB
CSP:active
Host:localhost:3000
Origin:chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36

这里是 Dropzone.js 的请求头:

Access-Control-Request-Headers:accept, cache-control, content-type, x-requested-with
Access-Control-Request-Method:POST
Origin:http://localhost:9000
Referer:http://localhost:9000/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36

【问题讨论】:

  • multer如何知道处理文件上传?
  • 能否将 dropzone html/js 代码添加到示例中?

标签: javascript node.js backbone.js express dropzone.js


【解决方案1】:

您可以将 multer 中间件添加到 post 处理程序中:

app.post('/upload',[ multer({ 
                            dest: './uploaded/files/',

                            onError: function (error, next) {

                              next(error);
                            }
                        }
                        ), function (req, res) {

    res.status(200).send('success');

}]);

【讨论】:

  • 我觉得 Mutler 没有问题,Dropzone.js 有问题
  • 您在使用 Postman 时是否看到任何正在上传(和保存)的内容?
【解决方案2】:

我通过在我的 Node 服务器的 Access-Control-Allow-Header 标头中启用 Cache-Control 解决了这个问题。

app.use(function (req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'Cache-Control, Origin, X-Requested-With, Content-Type, Accept, Authorization');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,PATCH,POST,DELETE');
    if (req.method === 'OPTIONS') return res.end();
    next();
});

【讨论】:

    猜你喜欢
    • 2014-07-31
    • 2020-12-14
    • 1970-01-01
    • 2014-07-04
    • 2014-06-21
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    相关资源
    最近更新 更多