从 Node.js 中的 .rar 或 .zip 文件中提取所有文件名
Extract All File Names from a .rar or .zip File in Node.js
我有一个 express
路由,上传文件,通过 formData
.
发送到服务器
假设文件是 .rar
或 .zip
文件,我的目标是提取此压缩文件夹或其子文件夹中的所有文件名。
这是我的 express
路线目前的样子:
module.exports = async (req, res) => {
try {
const busboy = new Busboy({ headers: req.headers })
busboy.on('finish', async () => {
const fileData = req.files.file
console.log(fileData)
// upload file
// send back response
})
req.pipe(busboy)
} catch (err) { return response.error(req, res, err, 'uploadProductFile_unexpected') }
}
这是 console.log(fileData)
的样子:
{
data:
<Buffer 52 61 72 21 1a 07 01 00 56 0c 22 93 0c 01 05 08 00 07 01 01 8d d6 8d 80 00 85 76 33 e4 49 02 03 0b fc d4 0d 04 b1 8c 1e 20 bc 86 da 2e 80 13
00 2b 66 ... >,
name: 'filename.rar',
encoding: '7bit',
mimetype: 'application/octet-stream',
truncated: false,
size: 224136
}
filename.rar
中有一些文件,例如 texture.png
和 info.txt
。我的目标是获取这些名称。
您应该能够使用 JSZip 提供的 .files 功能来执行此操作。
var fs = require("fs");
var JSZip = require("jszip");
// read a zip file
fs.readFile("project.zip", function(err, data) {
if (err) throw err;
JSZip.loadAsync(data).then(function (zip) {
files = Object.keys(zip.files);
console.log(files);
});
});
是此类解决方案的一个示例,由 this tutorial. 提供 您应该能够在 req
请求的文件上使用类似的功能。
看一下将缓冲区作为参数的NodeJS File System API. Explicitly fs.write。所以一旦你有了 fileData
对象,你就可以做类似
fs.write(fileData.name, fileData.data, (err) => {
/* handle errors and results*/
});
我有一个 express
路由,上传文件,通过 formData
.
假设文件是 .rar
或 .zip
文件,我的目标是提取此压缩文件夹或其子文件夹中的所有文件名。
这是我的 express
路线目前的样子:
module.exports = async (req, res) => {
try {
const busboy = new Busboy({ headers: req.headers })
busboy.on('finish', async () => {
const fileData = req.files.file
console.log(fileData)
// upload file
// send back response
})
req.pipe(busboy)
} catch (err) { return response.error(req, res, err, 'uploadProductFile_unexpected') }
}
这是 console.log(fileData)
的样子:
{
data:
<Buffer 52 61 72 21 1a 07 01 00 56 0c 22 93 0c 01 05 08 00 07 01 01 8d d6 8d 80 00 85 76 33 e4 49 02 03 0b fc d4 0d 04 b1 8c 1e 20 bc 86 da 2e 80 13
00 2b 66 ... >,
name: 'filename.rar',
encoding: '7bit',
mimetype: 'application/octet-stream',
truncated: false,
size: 224136
}
filename.rar
中有一些文件,例如 texture.png
和 info.txt
。我的目标是获取这些名称。
您应该能够使用 JSZip 提供的 .files 功能来执行此操作。
var fs = require("fs");
var JSZip = require("jszip");
// read a zip file
fs.readFile("project.zip", function(err, data) {
if (err) throw err;
JSZip.loadAsync(data).then(function (zip) {
files = Object.keys(zip.files);
console.log(files);
});
});
是此类解决方案的一个示例,由 this tutorial. 提供 您应该能够在 req
请求的文件上使用类似的功能。
看一下将缓冲区作为参数的NodeJS File System API. Explicitly fs.write。所以一旦你有了 fileData
对象,你就可以做类似
fs.write(fileData.name, fileData.data, (err) => {
/* handle errors and results*/
});