node.js - 如何在服务器 (Express.js) 上接收使用 FormData 发送的文件?
问题描述
我将图像文件附加到新的表单数据中。然后我需要在后端抓取文件,以便将其上传到 S3(必须在服务器端上传)。问题是我无法访问后端的文件。我尝试了多个中间件,例如 Formidable、express-fileupload 等,但它们都需要我有一个输入字段名称才能访问上传的文件。由于这不是 HTML 表单,我没有输入字段(或者不知道在哪里查找),因此我无法解析请求并获取上传的文件。
这是我的代码(选项是用户选择要上传的文件)。我也尝试过 POST,但无济于事,我现在使用 GET 传递一些我稍后需要的参数:
function onUploadFiles(survey, options) {
var formData = new FormData();
var file = options.files[0];
formData.append(file.name, file);
}
var xhr = new XMLHttpRequest();
xhr.open(
"GET",
`/logmood?file-name=${file.name}&file-type=${file.type}`,
); // https://surveyjs.io/api/MySurveys/uploadFiles
xhr.onload = function() {
var response = JSON.parse(xhr.responseText);
};
xhr.send(formData);
因此,在服务器端,我需要附加文件,然后继续执行此操作,在我的情况下上传到 S3,而我无法实现。图书馆提供了像这样的解决方案,bu,再一次,我没有输入字段:
您正在上传一个名为 car.jpg 的文件。您输入的名称字段是 foo: <input name="foo" type="file" />
。在您的快速服务器请求中,您可以从 req.files.foo 访问您上传的文件:
app.post('/upload', function(req, res) {
console.log(req.files.foo); // the uploaded file object
});
解决方案
您需要使用 multer 库来上传 express js 中的文件 https://github.com/expressjs/multer
推荐阅读
- c - 忽略使用 sprintf 显示数字
- apache - 匹配查询的 Apache 重写条件
- php - "error":true,"message":"required parameters are not available" while check api call using postman
- bash - 使用 Bash 在目录中查找最近的文件
- python - Scrapy 没有正确通过 url
- reactjs - 我正在尝试设置 react-select 值而不是为每个选择元素使用状态我试图在数组中获取所有这些值
- javascript - Express.js:如何刷新后端的数据库更改?
- tensorflow - 如何将灰度图像输入预训练的神经网络模型?
- javascript - e.preventDefault 在带有 Vue JS 的 Axios 中不起作用
- django - 移动到撰写后,Django 无法提供文件