gzip 压缩中的 Node.js 文件扩展名

亚历克斯

我想让客户端gzip在特定的 url 上下载压缩文件。我几乎可以正常工作 - 下载{fileName}.gz工作,但是当它解压缩时,它包含纯文件名,没有任何扩展名。我的文件是图像,所以我想要.png.jpg例如。我该怎么做?到目前为止,我得到了这个:

文件存储在服务器上,具有唯一的名称,由shortid. GET具体url找到我的产品数据库,获取名称,并将其设置为像这样的文件名:

res.setHeader("Content-Disposition", "attachment; filename=test.gz");
res.writeHead(200, {"Content-Type": `image/png`});

然后压缩:

let gzip = zlib.createGzip();
fs.createReadStream(filePath)
  .pipe(gzip)
  .pipe(res);

我的问题是 setHeader 只设置了原始文件的名称,也就是压缩.gz文件。如何将要解压的文件名设置为“my-image.png”?

罗伯特克莱普

它看起来不zlib.Gzip支持设置FNAME( "original filename" ) 标志,这是您想要的。

即便如此,标准gunzip工具通常也不会使用原始文件名;您必须明确告诉它使用它,因此即使可能,您的用户也可能不会使用正确的选项将其解压缩为其原始文件名(也许 ZIP 格式更合适,因为它是“真实的” " 存档格式,而 Gzip 或多或少是一种单文件压缩格式)。

最后,您必须想知道压缩 PNG 或 JPG 文件是否真的有意义,因为它们都已经是压缩文件格式。也许您可以将文件大小减少几个百分点,但仅此而已。

编辑:仔细检查您的问题后,我现在意识到,因为您已经拥有原始文件名,并且可以将其用作附件文件名的一部分,因此您可以将其后缀为.gz.

说原来的名字是my-image.png

res.setHeader("Content-Disposition", "attachment; filename=my-image.png.gz");

解压缩后,这将产生my-image.png您想要的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用node.js获取具有特定文件扩展名的文件列表?

Node.js获取文件扩展名

下载并解压缩内存中的gzip压缩文件?

下载并解压缩内存中的gzip压缩文件?

获取Node.js中没有扩展名的文件的MIME类型

使用multer在node.js(express)中上传后保留图像文件名和扩展名

如果有人通过Node JS应用程序中的multer将扩展名从exe更改为png,则不应允许文件上传

如何在Node.js中解压缩gzip文件

javascript-如何使用强大功能在Node JS中获取文件扩展名?

如果压缩扩展名不是“ .gz”,则Python“ gzip”模块行为异常

如何在Node JS中gzip玉模板

在node.js中提供gzip压缩版本

如何使用node.js查找文件扩展名更改?

压缩gzip文件问题

使用IBM Cloud Function读取gzip压缩文件(.gz)时遇到的问题(操作:Node.js 12)

批量解压缩不带gz扩展名的gzip文件

文件夹上的gzip而不更改文件扩展名

如何在Netbeans中编写扩展名为.js以外的其他扩展名的javascript文件?

是否可以在Phussion Passenger中为Node.js启用GZIP压缩?

在不使用文件扩展名的情况下使用Node.JS在浏览器中显示json文件

匹配文件扩展名-正则表达式Node.js

用其他扩展名在文件上解压缩Gzip?

Gzip使用.gz扩展名压缩每个文件的方式如何还原

Node.js获取文件扩展名

在Express JS 4.4.1中压缩文件(gzip)

在上载整个文件之前先验证文件扩展名(node.js)

PageSpeed Insights(node.js)未检测到gzip压缩

如何使用Node.js和zlib要求或评估gzip压缩的JavaScript文件?

如何使用multer和node js在不检查文件扩展名的情况下确定文件的真实类型