【发布时间】:2020-11-29 23:38:31
【问题描述】:
我尝试将图像发布到 MongoDB,但得到状态 CODE 404,
-
我有 multer 和静态路径“/uploads/”,这个目录在前端有一些图像,我从服务器获取数组,但我不知道如何显示它们:
-
我尝试在平面列表中显示它们:
//这里是它的工作。 当我替换为 {require("../../server/${item.imageurl}" 我得到错误 -
当我控制台记录需要路径时,我会使用 url->> ../../server/uploads\a1.jpg 获取对象
-
看到 / 是对面的 \ ,也许是它的问题?
现在我尝试上传:
-
当我选择文件时我得到了对象(selectedImage):
"localUri": "file:/data/user/0/host.exp.exponent/cache/ExperienceData/%2540anonymous%252FLior- 3698f362-fc81-4a77-8c97-8cd1349ce090/ImagePicker/d4c4b4ec-72e6-4e20-b6eb-4727bc84d93e.jpg",
还有我的 axios 帖子:
if (selectedImage !== null) {
let formData = new FormData();
formData.append("image", selectedImage);
console.log(formData);
try {
const response = await indexApi.post(`/uploads`, formData);
console.log("res", response);
} catch (err) {
console.log("c", err);
}
}
};
the form data that i send look like:
FormData {
"_parts": Array [
Array [
"image",
Object {
"localUri":
"file:/data/user/0/host.exp.exponent/cache/ExperienceData/%2540anonymous%252FLior-3698f362-fc81-
4a77-8c97-8cd1349ce090/ImagePicker/d4c4b4ec-72e6-4e20-b6eb-4727bc84d93e.jpg",
},
],
],
}
我收到错误 404 或 503.....
后端部分:
-
图像控制器:
const Image = require("../models/image"); const _ = require("lodash"); exports.getImages = (req, res) => { Image.find() .select("_id image desc") .then(images => { res.json({ images }); }) .catch(err => console.log("get images errors", err)); }; //INSERT NEW IMAGE// exports.uploadImage = (req, res) => { const image = new Image({ image: req.file.path, desc: req.body.desc, }); console.log(image); console.log(image); console.log("ss", image); image.save(err => { if (err) { return res.status(400).json({ error: "העלאת תמונה נכשלה" }); } res.json({ message: "העלאת תמונה עברה בהצלחה" }); });};
-
图片路线:
const express = require("express"); const { getImages, uploadImage } = require("../controllers/image"); const multer = require("multer"); //configure the images const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, "./uploads"); }, filename: function (req, file, cb) { console.log("f", file); cb(null, file.originalname); }, }); const upload = multer({ storage: storage, limits: { fileSize: 1024 * 1024 * 55, }, }); const router = express.Router(); router.get("/images", getImages); router.post("/images/new", upload.single("image"), uploadImage); module.exports = router;
所以也许我的问题可能会偏离路线......因为我不明白我有一条用于图像的路线(上传),以及另一条带有 get 和 post 方法(/images)的路线发布 (/images/new)
编辑。第一部分的错误图片
【问题讨论】:
-
您能否列出来自 1 的
value:image(从 db 获取)和 2:item.imageUrl(在你看来) -
我从 database::::: s Object { "images": Array [ Object { "_id": "5fc4023a907284016211ed4f", "desc": "1", "imageurl": "上传\\a1.jpg", }, Object { "_id": "5fc40255907284016211ed52", "desc": "4", "imageurl": "上传\\a4.jpg", }, ], } ----- ---------------- 例如:console.log(
../../server/${item.imageurl}) --->../../server/uploads\f3.jpg -
上传之后的双反斜杠 -
uploads\\a1.jpg是故意吗? -
不,而且 / 就像你看到的那样相反(它的 \ )但我不知道它来自
-
我像这样定义了常规目标: const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, "./uploads"); },并且在index app.use("/uploads", express.static("uploads"));
标签: react-native axios multer