节点,Multer和Axios:将媒体发送到服务器

时间:2020-07-02 12:32:49

标签: node.js angular axios multer

我正在努力使用axios将简单的媒体(mp3 / mp4)上传到服务器。 我有一个角度应用程序,它创建一个formData并将此formData通过以下方式发送到节点服务器:

return this.http.post(this.apiURL + '/uploadFile', formData);

我的服务器方法如下:

app.post('/api/uploadFile', upload.single('file'), (req, res) => {
  
  inputFile = req.file;
  let fd = new FormData();
  fd.append('file',inputFile.buffer, inputFile.originalname);

  axios.post(uploadFileURL , fd, { headers: { 'Content-Type': 'multipart/form-data' } })
    .then((response) => {
        console.log(response);
    })
    .catch((error) => {
        console.error(error)
    }) 
}) 

inputFile包含原始文件。我现在得到的错误是该请求不是多部分请求...

我也尝试用不同的方式定义formData:

formData = {
        file: {
            value: inputFile.buffer,
            options: {
                filename: inputFile.originalname,
                contentType: inputFile.mimetype
            }
        }
    };

这给我带来了另一个错误:“无法解析多部分servlet请求;嵌套异常是java.io.IOException:org.apache.tomcat.util.http.fileupload.FileUploadException:由于未找到多部分边界,请求被拒绝'

我做错什么了吗? 我想知道这是否可以链接到我使用const bodyParser = require('body-parser');的事实。对于我的其他一些要求。 任何帮助将不胜感激!

谢谢

编辑: 这是我的需要以及到目前为止我所做的:

  • 我有一个Web应用程序,允许用户上传媒体文件。
  • 我必须将这些文件发送到服务器,但是我无法使用浏览器直接发送请求。
  • 我创建了一个nodejs应用程序来实现代理任务,即从浏览器获取文件并将其发送到我的远程服务器。

0 个答案:

没有答案