gpt4 book ai didi

javascript - nodejs multer diskstorage 在保存到磁盘后删除文件

转载 作者:搜寻专家 更新时间:2023-11-01 00:28:21 24 4
gpt4 key购买 nike

我正在使用 multer diskstorage 将文件保存到磁盘。我首先将它保存到磁盘并对文件进行一些操作,然后我使用另一个函数和 lib 将它上传到远程存储桶。上传完成后,我想将其从磁盘中删除。

var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, '/tmp/my-uploads')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
})

var upload = multer({ storage: storage }).single('file')

下面是我如何使用它:

app.post('/api/photo', function (req, res) {
upload(req, res, function (err) {
uploadToRemoteBucket(req.file.path)
.then(data => {
// delete from disk first

res.end("UPLOAD COMPLETED!");
})
})
});

如何使用 diskStorage 删除功能删除临时文件夹中的文件? https://github.com/expressjs/multer/blob/master/storage/disk.js#L54

更新:

我已经决定将它模块化并放在另一个文件中:

const fileUpload = function(req, res, cb) {
upload(req, res, function (err) {
uploadToRemoteBucket(req.file.path)
.then(data => {
// delete from disk first

res.end("UPLOAD COMPLETED!");
})
})
}

module.exports = { fileUpload };

最佳答案

您不需要使用 multer 来删除文件,而且 _removeFile 是一个您不应该使用的私有(private)函数。

您将像往常一样通过 fs.unlink 删除文件.因此,无论您在何处访问 req.file,都可以执行以下操作:

const fs = require('fs')
const { promisify } = require('util')

const unlinkAsync = promisify(fs.unlink)

// ...

const storage = multer.diskStorage({
destination(req, file, cb) {
cb(null, '/tmp/my-uploads')
},
filename(req, file, cb) {
cb(null, `${file.fieldname}-${Date.now()}`)
}
})

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

app.post('/api/photo', upload, async (req, res) =>{
// You aren't doing anything with data so no need for the return value
await uploadToRemoteBucket(req.file.path)

// Delete the file like normal
await unlinkAsync(req.file.path)

res.end("UPLOAD COMPLETED!")
})

关于javascript - nodejs multer diskstorage 在保存到磁盘后删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49099744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com