如何将图像从React应用上传到mongo数据库?
[尝试从mongodb存储然后访问产品图像并做出反应。但是图像未存储在数据库中。或者说,正确的URL未存储在数据库中。
const multer = require ('multer');
const upload = multer({dest: 'uploads/'});
app.use(express.static('./uploads'));
const ObjSchema = new Schema({
picture:{
file:String,
inputKey:String
}});
app.get('/admin',(req,res)=>{
Item.find({}).then((doc)=>{
console.log(doc)
res.json(doc);
})
})
app.post('/admin',upload.single('picture'),(req,res)=>{
console.log(req.files);
console.log("Path is:",req.body.picture.file);
let item = new Item();
item.picture=req.body.picture;
item.save();
res.json(item);
console.log(item);
})
反应部件:
AddInfo(info){
let j = this.state.admin;
let obj ={picture:null};
if (info.productPicture.file !== null){
obj.picture=info.productPicture;
axios.post('http://localhost:5000/admin',obj).then((res)=>{
j.push(res.data);
this.setState({
products:s,
admin:j
});
});
}
}
回答如下:服务器
//在您的app.js /应用入口点中使用它。
const fileUpload = require('express-fileupload');
app.use(fileUpload({
limits: {fileSize: 50 * 1024 * 1024},
}));
// API
app.post('/admin',(req, res) => {
req.files.file.mv('your-file-directory' + file-name, function (err) {
if (err) {
console.log(err);
return;
}
console.log("uploaded");
});
};
client
var formData = new FormData();
var image = document.querySelector('#file');
formData.append("file", image.files[0]);
axios.post('baseurl/admin', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
如果无法在服务器中接收图像,请尝试从客户端将'Content-Type'
作为undefined
发送
如何将图像从React应用上传到mongo数据库?
[尝试从mongodb存储然后访问产品图像并做出反应。但是图像未存储在数据库中。或者说,正确的URL未存储在数据库中。
const multer = require ('multer');
const upload = multer({dest: 'uploads/'});
app.use(express.static('./uploads'));
const ObjSchema = new Schema({
picture:{
file:String,
inputKey:String
}});
app.get('/admin',(req,res)=>{
Item.find({}).then((doc)=>{
console.log(doc)
res.json(doc);
})
})
app.post('/admin',upload.single('picture'),(req,res)=>{
console.log(req.files);
console.log("Path is:",req.body.picture.file);
let item = new Item();
item.picture=req.body.picture;
item.save();
res.json(item);
console.log(item);
})
反应部件:
AddInfo(info){
let j = this.state.admin;
let obj ={picture:null};
if (info.productPicture.file !== null){
obj.picture=info.productPicture;
axios.post('http://localhost:5000/admin',obj).then((res)=>{
j.push(res.data);
this.setState({
products:s,
admin:j
});
});
}
}
回答如下:服务器
//在您的app.js /应用入口点中使用它。
const fileUpload = require('express-fileupload');
app.use(fileUpload({
limits: {fileSize: 50 * 1024 * 1024},
}));
// API
app.post('/admin',(req, res) => {
req.files.file.mv('your-file-directory' + file-name, function (err) {
if (err) {
console.log(err);
return;
}
console.log("uploaded");
});
};
client
var formData = new FormData();
var image = document.querySelector('#file');
formData.append("file", image.files[0]);
axios.post('baseurl/admin', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
如果无法在服务器中接收图像,请尝试从客户端将'Content-Type'
作为undefined
发送