【问题标题】:Image uploaded in my folder without extension with node js and multer图像上传到我的文件夹中,没有使用节点 js 和 multer 扩展
【发布时间】:2021-06-23 07:18:08
【问题描述】:

我对节点和 multer 有一个奇怪的问题。

我上传图片的脚本正在运行,但上传的图片没有扩展名(jpeg、png 等)。 就像这样: 4a8a1400d04b5ccdfdb829aa5ee62763

如果我向图像添加扩展名 (jpeg),则会显示它。

我的代码是这样的:

    const multer  = require('multer');

    var upload = multer({ dest: __dirname +'/uploads/' });

    app.post('/test.html', upload.single('avatar'),function (req,res,next){
        
       console.log("minetype"+req.file.mimetype);
       res.render('test', {})       
    });

还有我的表格:

    <form action="/test.html" method="post" enctype="multipart/form-data" name="monForm">
       <input type="file" name="avatar" />        
       <input type="submit" value="Upload">       
    </form>

【问题讨论】:

    标签: javascript html node.js multer


    【解决方案1】:

    您可以使用此配置文件名,例如: 这将保留原始扩展名并仍然使用 uniqid 包生成随机名称。 (如果需要,请随时用其他东西替换它)

    const uniqid = require('uniqid');
    const path = require('path');
    const multer  = require('multer');
    
    let upload = multer({
        storage: multer.diskStorage({
            destination: function (req, file, cb) {
                cb(null, `${__dirname}/uploads/`);
            },
            filename: function (req, file, cb) {
                cb(null, uniqid() + path.extname(file.originalname));
            },
        }),
    });
    

    【讨论】:

    • 您是大师 :) 您的代码运行良好 :) 但是我该怎么办,因为我的图片名称是 1.jpg 2.jpg 3.jpg 这是在客户端谢谢
    • 如果文件要保留原名?替换 cb(null, uniqid() + path.extname(file.originalname));与 cb(null, file.originalname);但如果人们向您发送错误的文件名,您可能会遇到问题
    • 如果我的回答对你有帮助,你能验证一下吗?
    猜你喜欢
    • 1970-01-01
    • 2016-06-25
    • 2017-08-30
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 2015-12-15
    相关资源
    最近更新 更多