2017-10-13 72 views
0

我已經看到了很多答案,並嘗試了幾乎所有的答案,但似乎沒有一個適合我。我可以將表格數據打印爲ASCII字符,但我沒有按預期的方式看到存儲在public/uploads文件夾中的文件。我可以使用API​​讀取和呈現存儲在反應應用程序上的文件,但無法上傳它。我沒有得到任何錯誤,一切正常,但沒有文件上傳到文件夾中。我試圖用multer上傳文件和下面的代碼片段:無法使用多重上傳文件

路線/ uploads.js

var storage = multer.diskStorage({ 
    dest : function (req, file, cb) { 
     cb(null, path.join(__dirname, 'public/uploads/')) 
    } 
}); 

var upload = multer({storage:storage}) ; 

router.post('/upload', upload.single('mypic'), function (req, res, next) { 
    console.log("inside upload files"); 
    console.log(req.body); //prints non-readable characters as I am uploading image as expected    
    console.log(req.file); //says undefined 
    return res.status(204).end(); 
}); 

API.js(陣營側):

export const uploadFile = (payload) => //payload is actually formdata 
    fetch(`${api}/files/upload`, 
     { 
     method: 'POST', 
     //headers: { 'Content-Type': 'application/json' },       
     headers: {    
      'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8' 
     },    
     body: payload 
    } 
) 
.then(res => { 
    console.log(res); 
    return res.status; 
}) 
.catch(error => { 
     console.log(error); 
     return error; 
}); 

回答

0

嘗試刪除:

'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8' 
+0

試過了,但它不起作用。它基本上是一個FormData對象。我們可以使用什麼標題發送此類數據? –

+0

你是否修改過你的代碼?取('$ {} API /文件/ upload', { 方法: 'POST', 體:有效載荷 } – Sagar

+0

是關鍵表單數據 'mypic' –

0

試試下面它包含多個部分:

var storage = multer.diskStorage({ 
     destination: function (req, file, cb) { 

      const extension = file.mimetype.split('/')[1]; 
      //you can change destination runtime 
      if(file.fieldname == "covers[]") 
      { 
       cb(null, __dirname, '../public/uploads/cover'); 
       return; 
      } 
      else 
      { 
       cb(null, '../public/uploads/image'); 
       return; 
      } 

     }, 
     filename: function (req, file, cb) { 
      //you can also change name 

      cb(null, filename) 
     } 
    }); 

    var upload = multer({ 
     storage: storage, 
    });