【问题标题】:How do I change directory & rename the file during uploading in nodeJs?在节点 Js 中上传期间如何更改目录并重命名文件?
【发布时间】:2018-07-20 23:35:06
【问题描述】:

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

用户名.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>

【问题讨论】:

    标签: javascript html node.js express multer


    【解决方案1】:

    我会这样做,除非您需要将上传的文件保留在其原始上传位置:

    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")
            }
    
        })
    })
    

    【讨论】:

      【解决方案2】:

      在存储变量中声明你的目录

      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
      });
      

      在处理发布请求时

      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
      

      【讨论】:

        【解决方案3】:

        您的变量 file 不是指定您写入文件的位置吗?

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

        【讨论】:

          猜你喜欢
          • 2020-09-25
          • 2012-11-24
          • 2014-04-15
          • 2011-04-01
          • 1970-01-01
          • 2015-12-04
          • 1970-01-01
          • 2020-01-13
          • 2011-03-16
          相关资源
          最近更新 更多