Javascript 使用Multer上传文件,并在解析和上传到数据库之前将其短暂存储在内存中
我对编程比较陌生,但我会尽量使它尽可能简洁 我正在使用multer尝试上载XML文件。我有一个Node Express服务器,并且正在使用React with.jsx。上传后,我将解析该文件数据并将其发布到Postgres数据库。考虑到这一点,我没有将上传的文件写入磁盘,我只是在解析之前使用multer的buffer属性将其存储在内存中 我让multer在一个小型测试项目中使用jQuery进行表单提交,但我在这里没有使用jQuery,我不确定表单提交在React中是如何工作的,或者这是否是问题所在。我只包括与使用multer直接相关的代码。其他一切都很好 这是我的表格:Javascript 使用Multer上传文件,并在解析和上传到数据库之前将其短暂存储在内存中,javascript,node.js,express,reactjs,multer,Javascript,Node.js,Express,Reactjs,Multer,我对编程比较陌生,但我会尽量使它尽可能简洁 我正在使用multer尝试上载XML文件。我有一个Node Express服务器,并且正在使用React with.jsx。上传后,我将解析该文件数据并将其发布到Postgres数据库。考虑到这一点,我没有将上传的文件写入磁盘,我只是在解析之前使用multer的buffer属性将其存储在内存中 我让multer在一个小型测试项目中使用jQuery进行表单提交,但我在这里没有使用jQuery,我不确定表单提交在React中是如何工作的,或者这是否是问题所
<form
id="uploadForm"
ref="form"
encType="multipart/form-data"
method="post"
action="/upload"
onSubmit={this.handleSubmit}
>
<input
type="file"
name="songlist"
/>
<input
type="submit"
value="UploadFile"
name="submit"
/>
</form>
postSongs()调用我的服务器端路由:
postSongs() {
axios.post("/upload")
.then(() => {
console.log('success')
})
.catch((err) => {
console.error(err);
});
},
在我的服务器端路径中,我正在发出post请求,该请求应将该文件存储在multer的内存中:
const multer = require('multer');
const upload = multer({inMemory: true});
router.post('/upload', upload.single('songlist'), (req, res, next) => {
console.log(req.file);
knex('songs')
.where('admin_id', adminId)
.first()
.then((songs) => {
console.log(songs);
})
.catch((err) => {
next(err);
});
});
我知道这段代码中缺少了实现最终目标的部分,但现在我只是尝试记录multer的文件对象(req.file)。我以为upload.single('songlist')
应该访问表单中名为songlist的特定输入,而匹配表单操作的帖子应该匹配所有这些
我认为我没有正确地解释这一点。有什么帮助吗?我在这上面浪费了太多时间。你不是在发布表单,而是在发布一个空的主体。请尝试以下方法:
var formData = new FormData(document.getElementById('uploadForm'));
axios.post('upload', formData)
.then(() => {
console.log('success');
})
.catch((err) => {
console.error(err);
});
啊!非常感谢!我是如此接近!
var formData = new FormData(document.getElementById('uploadForm'));
axios.post('upload', formData)
.then(() => {
console.log('success');
})
.catch((err) => {
console.error(err);
});