1

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

4

2 回答 2

3

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

穆尔特

快速文件上传

上传文件

Ng2 文件上传

在这里你可以找到一个教程

于 2019-02-11T12:44:41.233 回答
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;
于 2019-02-11T12:34:50.557 回答