2017-10-13 78 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, 
    });