我可以访问网站进行测试。我知道网站的代码,并使用所有者权限进行测试。代码类似于下面的
var something= "{USER INPUT}'
result = eval((something));
所以使用SSJS我可以修改它以有效阅读
var something= "fs.readFileSync('/somewhere/file.txt',null)"
result = eval((something));
这将内容输出到屏幕下方的屏幕,这很好。但是,在ZIP文件上执行相同的操作会给我所有奇怪的字符,例如
PK�coG���^�*file.txt
现在,该文件看起来非常接近我拥有的本地ZIP文件。它从PK
开始,包含文件名。但是,在Node版本中,有很多空方框和带问号的黑框。
有关如何正确获取ZIP文件内容的任何建议吗?
答案 0 :(得分:0)
我建议你使用ChildProcess exec函数来运行gzip命令并在之后读取它。
答案 1 :(得分:0)
如果您希望解压缩实际的.ZIP文件,zlib.gunzip()
或.unzip()
将失败并显示错误的标题检查"错误,因为他们并不打算使用.ZIP文件。 ZIP文件往往是捆绑目录,而gzip通常只适用于单个文件(有人请注释/更正,如果我关闭它)。另请参阅How are zlib, gzip and Zip related? What are is common and How are they different?。
如果您正在使用.ZIP,那么有一些模块专门用于此目的。一个例子是node-unzip。
const fs = require('fs');
const unzip = require('node-unzip');
fs.createReadStream('path/to/some.zip').pipe(unzip.Extract({ path: 'output/path' }));
如果确实想要对zlib做些什么,那么你会想要这样的事情:
const zlib = require('zlib');
zlib.unzip('./src/slow.jpg.gz', (err, data) => {
if (err) throw err;
// do something with the data
});
另外,对于#eval()
- >您应该非常小心。 Why is using the JavaScript eval function a bad idea?