我正在尝试编写一些代码,以使服务器可以通过使用nodejs(express)来解压缩请求的文件...
app.post('/unzip', function(req, res) {
//Get User Information
var id = req.body.id;
//Get ZIP Information
var rendering_ready_file_unzip = req.body.filename + '.zip';
var rendering_ready_file_unzip_nonext = req.body.filename;
//Extract zip
var extract = require('extract-zip');
var unzip_route = path.join(__dirname, '../unzip/' + "id" + '/' + date + '/');;
extract(path.join(__dirname, '../upload/' + rendering_ready_file_unzip), {dir: unzip_route}, function (err) {
if (err) {
console.log(err);
}
res.end();
});}
它可以工作,但是其他语言(如韩语)在解压缩后会损坏。。所以我想知道可以指定编码类型的解压缩模块。
你知道吗?
答案 0 :(得分:0)
问题可能与模块无关。它有助于将有问题的代码减少到最少,在这种情况下,可能是以下情况:
const path = require('path');
const extract = require('extract-zip');
const file_unzip = 'test.zip';
extract(path.join(__dirname, file_unzip), {dir: __dirname}, function (err) {
if (err) {
console.log(err);
}
});
将其放入index.js并安装extract-unzip之后,可以在bash中使用同一目录的测试用例。将韩文字符回显到文件中,并确保它们在那里:
$echo 안녕하세요>test
$cat test
안녕하세요
压缩文件,删除原始文件并确保它不存在:
$zip test.zip test
adding: test (stored 0%)
$rm test
$ls test*
test.zip
运行脚本,查看文件已被提取并包含相同的字符:
$node index.js
$ls test*
test test.zip
$cat test
안녕하세요
我用其他几种语言的字符得到了相同的结果。因此,至少在此设置中,模块将解压缩而不更改内部文件中的字符。 尝试在系统上运行相同的测试,并仔细查看解压缩之前发生的事情。在文件的生成,编码,压缩或上载方式方面可能存在问题。一次调查一个步骤。