【问题标题】:How to upload, display and erase images using node.js and express如何使用 node.js 和 express 上传、显示和擦除图像
【发布时间】:2019-02-11 10:28:58
【问题描述】:

我需要将图像上传到服务器(内置于 nodejs)并在 html 站点中显示给每个人。当有人做同样的事情时,最后一张图片可以消失,我不需要存储它。 任何人都可以帮助我吗? 最好的

【问题讨论】:

标签: node.js express server image-uploading


【解决方案1】:

有很多教程和 npm 包可用于使用 nodejs 上传文件

Multer

Express Fileupload

Fileupload

Ng2 File Upload

Here你可以找到教程

【讨论】:

    【解决方案2】:

    希望对你有帮助

    在此示例中,如果您传递 id 和文件夹相同的文件被替换,请根据您的要求进行更改

    我用过multer

    const router = express.Router();
    const path = require("path");
    const fs = require('fs');
    var multer = require('multer')
    var upload = multer({ dest: 'uploads/' })
    
    router.get('/:folder/:id', async (req, res) => {
        let filepath = path.join(__dirname + `/../images/${req.params.folder}/${req.params.id}.png`);
        res.sendFile(filepath);
    });
    
    const upload = async (image, folder, id) => {
    
        let dir = `images`;
    
        if (!fs.existsSync(dir)) {
            fs.mkdirSync(dir);
        }
    
        dir = `images/${folder}`;
    
        if (!fs.existsSync(dir)) {
            fs.mkdirSync(dir);
        }
    
        await image.mv(`images/${folder}/${id}.png`);
    
        return `${config.DOMAIN}/images/${folder}/${id}`;
    }
    
    router.post('/:folder/:id', upload.single('file'), async (req, res) => {
        try {
    
            let image = req.files.image;
    
            if (!image)
                return res.status(400).send({ message: 'Image not provided!' });
    
            const imageUrl = await upload(image, req.params.folder, req.params.id);
    
            if (imageUrl)
                res.status(201).send({ message: "Image uploaded", url: imageUrl });
    
        } catch (e) {
            res.status(400).send({ message: "Error uploading image!", error: e.toString(), req: req.body });
        }
    });
    
    router.delete('/:folder/:id', async (req, res) => {
        try {
            fs.unlinkSync(`images/${req.params.folder}/${req.params.id}.png`);
    
            res.status(201).send({ message: "Image deleted" });
    
        } catch (e) {
            res.status(400).send({ message: "Error deleting image!", error: e.toString(), req: req.body });
        }
    });
    
    module.exports = router;
    

    【讨论】:

    • 你能告诉我一个从客户端调用这个文件的例子吗(角度)
    猜你喜欢
    • 2013-03-24
    • 1970-01-01
    • 2020-03-22
    • 2011-07-06
    • 1970-01-01
    • 2011-10-20
    • 2014-11-29
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多