nodejs使用编码选项解压缩

问题描述 投票:0回答:1

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

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

你知道吗?

node.js express unzip
1个回答
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
안녕하세요

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

© www.soinside.com 2019 - 2024. All rights reserved.