Javascript Expressjs:res.download期间图像文件编码出现问题
我有一个非常普通的node.js服务器,本地安装了expressjs用于开发;我存储各种文件,并通过基本的HTTP调用请求它们,该调用通过express的res.download功能返回文件。在大多数情况下,这项工作不会遇到任何问题。但是,对于非常小的文件子集,最终用户接收到的文件比预期的要大得多(几乎是2倍),并且任何常规查看器都无法读取。在大约一百个文件中,这种情况只发生过两次,都是JPG文件,但样本太小,无法得出任何结论。据我所知:Javascript Expressjs:res.download期间图像文件编码出现问题,javascript,node.js,image,express,encoding,Javascript,Node.js,Image,Express,Encoding,我有一个非常普通的node.js服务器,本地安装了expressjs用于开发;我存储各种文件,并通过基本的HTTP调用请求它们,该调用通过express的res.download功能返回文件。在大多数情况下,这项工作不会遇到任何问题。但是,对于非常小的文件子集,最终用户接收到的文件比预期的要大得多(几乎是2倍),并且任何常规查看器都无法读取。在大约一百个文件中,这种情况只发生过两次,都是JPG文件,但样本太小,无法得出任何结论。据我所知: 这个问题是可复制的:如果它发生在一个文件中,它总是会发
- 这个问题是可复制的:如果它发生在一个文件中,它总是会发生李>
- 问题与文件的存储方式无关:如果我将有问题的文件与另一个文件交换,但保持所有其他文件(名称、位置等)不变,则效果良好李>
- 就在res.download发生之前,文件还可以:使用fs.stats检查其大小会返回正确的值
- HTTP响应没有遇到任何可见问题:没有错误,响应代码为200
- 源文件似乎有正常的元数据和JPG标记
EF BF BD
(未知字符符号)!我仍然无法理解为什么会发生这种情况,是什么使这几个文件与其他文件不同,以及它是否可以在上游检测和/或纠正
更新2经过一些附加测试后,我仍然无法确定原因,但我可以添加以下信息:
- 就系统而言,问题发生在fs.js中的数据流期间
- 根本原因位于图像的EXIF数据中的某个位置
谢谢 您的问题来自express配置中的“connect livereload”。 它在注入重新加载的脚本时破坏二进制流 有关详细信息,请参阅