【发布时间】:2021-08-11 23:45:48
【问题描述】:
我已经使用multer将文件上传到我的后端filesystem
我的服务器是node,客户端是react。
我无法在客户端react下载和显示保存的文件
每当我执行res.download(file) 时,它都会抛出一个错误,因为客户端连接被拒绝。
我的代码如下:
UserToUploadMapping.js
const mongoose = require("mongoose");
const UserToUploadMapping = new mongoose.Schema({
userId: {
type:String,
required:true
},
file: {
type: Object,
required: true,
},
date: {
type: Date,
default: Date.now,
},
});
module.exports = mongoose.model("UserToUploadMapping", UserToUploadMapping);
上传视频.js
const router = require("express").Router();
const multer = require('multer');
const UserToUploadMapping = require('../models/UserToUploadMapping')
let nameFile = ''
const storage = multer.diskStorage({
destination:'./Videos',
filename:(req,file,cb) => {
console.log(file)
nameFile = file.originalname + " "+ Date.now()
cb(null, nameFile)
}
})
const upload = multer({storage:storage})
router.post('/upload', upload.single('video'), async (req,res,next) => {
console.log("object")
const saveMapping = new UserToUploadMapping({
userId:'123',
file:req.file,
})
await saveMapping.save()
res.send("Video uploaded")
})
router.get('/download', async(req,res,next) => {
const x = await UserToUploadMapping.find()
// res.send(x)
res.download(x[0].path)
})
module.exports = router;
客户
const fetchVideo = async () => {
const resp = await axios.get(
"http://localhost:5000/api/user/video/download"
);
console.log(resp)
};
return (
<>
<NavContainer />
<div className={classes.Post}>
<Input
type="file"
onChange={(e) => uploadVideos(e.target.files)}
accept="video/mp4"
/>
{/* <Button onClick={(e) => submitHandler(e)}>Upload</Button> */}
<video></video>
</div>
</>
);
错误
【问题讨论】:
-
请在问题中添加一条错误消息。
-
错误:连接被拒绝。就是这么说的
-
localhost:5000 上似乎没有服务器。你如何运行快速服务器?
-
@quentino 快递服务器工作正常。只有下载路径失败..可能是因为我缺少在 axios 中设置一些配置?
-
如果你有的话,你可以添加服务器日志,并检查你是否能够成功找到函数中的'x'
标签: javascript node.js express mongoose multer