使用编码选项解压缩nodejs

时间:2019-02-28 06:06:31

标签: node.js express unzip

我正在尝试编写一些代码,以使服务器可以通过使用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();
    });}

它可以工作,但是其他语言(如韩语)在解压缩后会损坏。。所以我想知道可以指定编码类型的解压缩模块。

你知道吗?

1 个答案:

答案 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
안녕하세요

我用其他几种语言的字符得到了相同的结果。因此,至少在此设置中,模块将解压缩而不更改内部文件中的字符。 尝试在系统上运行相同的测试,并仔细查看解压缩之前发生的事情。在文件的生成,编码,压缩或上载方式方面可能存在问题。一次调查一个步骤。