【问题标题】:Multer throws error while uploading filesMulter 在上传文件时抛出错误
【发布时间】:2020-10-22 21:55:39
【问题描述】:

当我不在 multer 中连接 new Date().toISOString 和 file.originalname 以上传文件时,它可以完美运行。文件被上传。但是如果我连接创建唯一的文件名,那么它会说

Error: ENOENT: no such file or directory, open 'rootDirectory\uploads\2020-10-22T13:28:21.741Zman2.jpg'

即使我尝试存储从 new Date().toISOString 和 file.originalname 返回的值并将它们连接起来并传递给回调函数,它也会抛出相同的错误。

如何解决这个问题?

const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, "./uploads");
  },
  filename: function f(req, file, cb) {
    // const originalname = file.originalname;
    // const date = new Date().toISOString();
    cb(null, new Date().toISOString() + file.originalname);
  },
});

【问题讨论】:

    标签: javascript reactjs multer


    【解决方案1】:

    这样试试

    cb(null,Date.now() + '-' + file.originalname.replace(/\s+/g, ""))

    这是一个完整的方法,如果有帮助的话

        var storage = multer.diskStorage({
          destination: function (req, file, cb) {
            cb(null, './uploads')
          },
          filename: function (req, file, cb) {
            cb(null, Date.now() + '-' + file.originalname.replace(/\s+/g, ""))
          },
        })
    

    【讨论】:

    • 是的,这在删除空间后有效,但我想知道上面代码中指定的路径中没有空格仍然为什么它不工作
    • 您的保存方法存在两个问题,首先,保存没有“:”(冒号)和“.”的文件总是好的。 (句点)由 new Date().toISOString() 生成,其次,如果在某些情况下系统将空格字符附加到文件名,我们将删除空格,因此它只是一个双重检查以确保输出的可预测性跨度>
    猜你喜欢
    • 2015-12-30
    • 2018-05-27
    • 2016-03-06
    • 1970-01-01
    • 2017-10-09
    • 2018-04-24
    • 2021-08-15
    • 1970-01-01
    • 2016-06-18
    相关资源
    最近更新 更多