2015-06-17 65 views
1

我在后端使用Multer来处理前端的文件上传和Dropzone.js。当我使用Postman来测试我的后端代码时,一切正常,但在使用Dropzone时,状态处于挂起状态,文件没有上传。然后等待4分钟后,我得到Timeout错误。Dropzone.js状态处于挂起状态,未上传文件

我明确地说,使用POST而不是PUT和工艺文件上传队列的时候了。

method: "post" 
autoProcessQueue: true 

我不知道有没有用Dropzone.js任何选项,我很想念我的还是后端代码有问题

enter image description here

这里是我的结点代码来处理文件上传。

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 
+0

multer如何知道如何处理文件上传? –

+0

您可以将dropzone html/js代码添加到示例中吗? –

回答

1

我通过在我的节点服务器的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(); 
}); 
1

你可以将Muller中间件添加到帖子处理器中:

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

          onError: function (error, next) { 

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

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

}]); 
+0

我不认为Mutler有问题,Dropzone.js有问题 – Apha

+0

当您使用邮差时,您是否看到任何正在上传(并保存)的内容? –

+0

是的。当我使用邮差时,文件正在上传 – Apha