簡體   English   中英

重命名上載的文件nodejs和multer

[英]renaming uploaded file nodejs and multer

Multer中文件名的問題

我正在使用express.js和multer將圖像上傳到服務器。 我是這樣的:

var storage = multer.diskStorage({
        destination: function (req, file, callback) {
            callback(null, "../client/member/upload");
        },
        filename: function (req, file, callback) {
            console.log('1', 1);
            callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);
        }
    });
    var upload = multer({ storage : storage}).single('userPhoto');

但是問題是文件名永遠不會更改。 我的上傳程序處理程序:

function memberUpload(request, response) {

    var storage = multer.diskStorage({
        destination: function (req, file, callback) {
            callback(null, "../client/member/upload");
        },
        filename: function (req, file, callback) {
            console.log('1', 1);
            callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);
        }
    });
    var upload = multer({ storage : storage}).single('userPhoto');

    var folderName = path.join(__dirname, '../', 'client/member/upload');

    if (!fs.existsSync(folderName)) {
        fs.mkdir(folderName, function (err) {
            if (err) {
                return response.status(500).send(err);
            }
            else {
                upload(request, response, function (err) {
                    if (err) {
                        return response.status(400)
                            .send('No files were uploaded.');
                    }
                    var sentFile = request.files.file,
                        fileName = (request.files.file && request.files.file.name) ? request.files.file.name : 'test';

                    sentFile.mv(path.join(__dirname, '../', 'client/member/upload/', fileName), function (err) {
                        mime.lookup(path.join(__dirname, '../', 'client/member/upload/', fileName));         // => 'text/plain'
                        if (err) {
                            return response.status(500)
                                .send(err);
                        }
                        response.send({'location': '../member/upload/' + fileName});
                    });
                });
            }
        });
    }
    else {
        upload(request, response, function (err) {
            if (err) {
                return response.status(400)
                    .send('No files were uploaded.');
            }
            var sentFile = request.files.file,
                fileName = (request.files.file && request.files.file.name) ? request.files.file.name : 'test';

            sentFile.mv(path.join(__dirname, '../', 'client/member/upload/', fileName), function (err) {
                mime.lookup(path.join(__dirname, '../', 'client/member/upload/', fileName));         // => 'text/plain'
                if (err) {
                    return response.status(500)
                        .send(err);
                }
                response.send({'location': '../member/upload/' + fileName});
            });
        });
    }
}

該文件保存到正確的目錄中,名稱為“ blobid0.jpeg”,“ blobid1.png”等等……我的錯是什么?

這是我將任何文件(pdf,txt,png)上傳到服務器的代碼。希望對您有幫助。

exports.saveMedia = ((req, res) => {
        const storage = multer.diskStorage({
            destination: (req, file, callback) => {
                callback(null, (config.const.path.base + config.const.path.productReviewMedia));
            },
            filename: (req, file, callback) => {
                callback(null, Date.now() + '-' + file.originalname);

            }
        });

        const upload = multer({storage: storage}).any('file');

        upload(req, res, (err) => {
            if (err) {
                return res.status(400).send({
                    message: helper.getErrorMessage(err)
                });
            }
            let results = req.files.map((file) => {
                return {
                    mediaName: file.filename,
                    origMediaName: file.originalname,
                    mediaSource: 'http://' + req.headers.host + config.const.path.productReviewMedia + file.filename
                }
            });
            res.status(200).json(results);
        });
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM