Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在mongodb中发布图像?_Javascript_Node.js_Reactjs_Mongodb_Express - Fatal编程技术网

Javascript 如何在mongodb中发布图像?

Javascript 如何在mongodb中发布图像?,javascript,node.js,reactjs,mongodb,express,Javascript,Node.js,Reactjs,Mongodb,Express,晚上好,互联网上的人们, 我正试图将图片发布到Mongodb,但它不起作用。 编辑:看起来我是以JSON的形式发布图像数据(我不应该这么做),但我不知道如何做 代码上载中间件: const path = require("path"); const multer = require("multer"); //location file const storage = multer.diskStorage({ destination: functi

晚上好,互联网上的人们, 我正试图将图片发布到Mongodb,但它不起作用。 编辑:看起来我是以JSON的形式发布图像数据(我不应该这么做),但我不知道如何做

代码上载中间件:

const path = require("path");
const multer = require("multer");

//location file
const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, "uploads/");
    },
    filename: function (req, file, cb) {
        let ext = path.extname(file.originalname);
        cb(null, Date.now() + ext);
    },
});

const upload = multer({
    storage: storage,
    fileFilter: function (req, file, cb) {
        if (file.mimetype == "image/png" || file.mimetype == "image/jpg") {
            cb(null, true);
        } else {
            alert("only jpg & png files");
            cb(null, false);
        }
    },
    limits: {
        fileSize: 1024 * 1024 * 1024 * 5,
    },
});
module.exports = upload;
代码路由器:

const router = require("express").Router();
let User = require("../model/userSchema");
const upload = require("../middleware/upload");

router.get("/", async (req, res) => {
    try {
        const users = await User.find();
        res.json(users);
    } catch (Error) {
        throw new Error("error");
    }
});

router.post("/add", upload.single("image"), async (req, res) => {
    console.log(req.file);
    const user = new User({
        name: req.body.name,
        age: req.body.age,
    });
    if (req.file) {
        user.image = req.file.path;
    }
    try {
        const savedUser = await user.save();
        res.json(savedUser);
    } catch (err) {
        console.log(err);
    }
});
代码表单(正在上载图像的位置):

fetch(`${endpoint}/User/add`{
方法:“POST”、//或“PUT”
标题:{
“内容类型”:“应用程序/json”,
},
正文:JSON.stringify(用户),
})
.then(response=>response.json())
。然后(数据=>{
console.log(“成功:”,数据);
})
.catch(错误=>{
控制台错误(“错误:”,错误);
});
//发送时将用户设置为空,以便客户端可以轻松添加更多用户
setUser(“”);
设置(“”);
setImage(“”);
};
返回(
生日男孩/女孩的名字
进入年龄
上传照片
创建用户
这可能有帮助:这可能有帮助:
fetch(`${endpoint}/User/add`, {
            method: "POST", // or 'PUT'
            headers: {
                "Content-Type": "application/json",
            },
            body: JSON.stringify(user),
        })
            .then(response => response.json())
            .then(data => {
                console.log("Success:", data);
            })
            .catch(error => {
                console.error("Error:", error);
            });

        //set user to blank when sendin, so client can easily add more users
        setUser("");
        setAge("");
        setImage("");
    };

    return (
        <form
            onSubmit={submitHandle}
            encType="multipart/form-data"
            method="post"
            action="/upload"
        >
            <div className="form-group">
                <label for="exampleInputEmail1">Name birthday boy/girl</label>
                <input
                    type="text"
                    className="form-control"
                    id="exampleInputEmail1"
                    value={username}
                    onChange={changeUsername}
                    aria-describedby="emailHelp"
                    placeholder="Enter name"
                />
                <label>Enter age</label>
                <input
                    type="text"
                    value={age}
                    onChange={changeAge}
                    aria-describedby="emailHelp"
                    placeholder="Enter age"
                />
                <label>Upload photo</label>
                <input
                    type="file"
                    placeholder="upload image"
                    value={image}
                    onChange={changeImage}
                />
            </div>

            <button type="submit" className="btn btn-success">
                Create user
            </button>
        </form>