【问题标题】:Corrupt image when downloading JPG from URL using NodeJS使用 NodeJS 从 URL 下载 JPG 时图像损坏
【发布时间】:2016-05-08 21:30:57
【问题描述】:

我在 JavaScript 中创建了一个从 URL 下载图像并将图像写入磁盘的函数。该功能适用​​于我下载的大多数图像,但是有 30 个左右(共 400 个)已损坏且无法打开。文件已创建,但没有关联扩展名,详细信息显示该文件为 0 kB。我知道源文件没有损坏,因为我在 C# 中有一个适用于所有文件的有效解决方案。

var download = function(url, destination, callback) {
    fs.exists(destination, function(exists){
        if (!exists){
            http.get(url, function(response) {
                var imageData = '';
                response.setEncoding('binary');
                response.on('data', function(chunk){
                    imageData += chunk;
                });
                response.on('end', function(){
                   fs.writeFile(destination, imageData, 'binary', function(error){
                      if(error){
                          console.log(error);
                      } else{
                          callback();
                      } 
                   });
                });
            });
        }
    });
};

我正在使用 Windows 机器,不确定这是否会成为问题,所以我想我会提到它。

【问题讨论】:

标签: node.js corrupt


【解决方案1】:

结果证明我没有检查路径字符串中的非法字符。 在我的 C# 解决方案中,我使用了不同的文件名。一旦我用正则表达式删除了非法字符,一切都很好。

【讨论】:

  • 什么是非法字符?你是如何删除它们的?
  • \ / : * ? " | 这些字符无效,不能包含在 Windows 操作系统中。所以我使用 RegExp() 删除它们。还有其他方法可以做到这一点,但这个解决方案对我来说效果最好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 2022-01-23
  • 2018-09-10
  • 2017-04-08
  • 1970-01-01
  • 2018-03-20
相关资源
最近更新 更多