Javascript 如何更改目录&;在nodeJs中上载时重命名文件?

Javascript 如何更改目录&;在nodeJs中上载时重命名文件?,javascript,html,node.js,express,multer,Javascript,Html,Node.js,Express,Multer,我正在使用multer和fs上传图像文件 由于所有文件都存储在我的“routes”文件夹中,而不是multer创建的“uploads”,因此如何更改上载文件的目录 另外,如何更改文件名示例: username.jpg 这是我的代码: var upload = multer({ dest: '/tmp' }); router.post('/file_upload', upload.single("file"), function (req, res) { var file = __dir

我正在使用multer和fs上传图像文件 由于所有文件都存储在我的“routes”文件夹中,而不是multer创建的“uploads”,因此如何更改上载文件的目录 另外,如何更改文件名示例:

username.jpg

这是我的代码:

var upload = multer({ dest: '/tmp' });

router.post('/file_upload', upload.single("file"), function (req, res) {
    var file = __dirname + "/" + req.file.originalname;
    fs.readFile(req.file.path, function (err, data) {
        fs.writeFile(file, data, function (err) {
            if (err) {
                console.log(err);
            } else {
                res.redirect("back");
            }

        });
    });
})
在客户端:

<html>

    <head>
        <title>File Uploading Form</title>
    </head>

    <body>
        <h3>File Upload:</h3>
        Select a file to upload:
        <br />
        <form action="/file_upload" method="POST" enctype="multipart/form-
    data">
            <input type="file" name="file" />
            <input type="submit" value="Upload File" />
        </form>
    </body>

</html>

文件上载表格
文件上载:
选择要上载的文件:


您的变量文件是否指定了写入文件的位置

var file = __dirname + "/NewFolder/" + newFileName.jpg

除非您需要将上载的文件保留在其原始上载位置,否则我将按如下方式执行:

var upload = multer({ dest: '/tmp' });

router.post('/file_upload', upload.single('file'), function (req, res) {
    // Here change 'uploads' to the folder name you prefer.
    // Also change req.file.originalname for your preferred file name
    var file = path.join(__dirname, 'uploads', req.file.originalname)
    fs.rename(req.file.path, file, function (err) {
        if (err) {
            console.log(err);
        } else {
            res.redirect("back")
        }

    })
})

在存储变量中声明目录

var storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, './')//Declare it here where you want to store
    },
    filename: function (req, file, cb) {
        cb(null, file.originalname);//You can give name here file.****
    }
});
var upload = multer({
    storage: storage
});
在处理post请求时

var path = req.files[0].path;
    var imageName = req.files[0].originalname;//change name here
    var imagepath = {};
    imagepath['path'] = path;
    imagepath['originalname'] = imageName; // name change