2015-06-17 98 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