使用Node.js下载和保存图片文件(request版本)

首先

总结保存从外部服务器下载的图像文件到本地时需要注意的事项,可用以下方式:

样本源码(修改前)

听到「使用Node.js将从外部服务器下载的图片文件保存到本地」的需求,我迅速创建了以下示例。

var options = {
    uri: "http://local_nginx_server_ip/globalipcam_resize_snap"
};

request.get(options, function(error, response, body) {
    if (!error) {
        fs.writeFile("/saved_images/snap.jpg", body, function(errorWrite) {
        });
    }
});

请不要惊讶于现在的这种代码吗?有很多原因。

此时保存的snap.jpg无法在图像查看器中正确显示。

当以二进制编辑器(BZ)来显示时,…

正しくないsnap.png

可以确认’JFIF’等关键词,但开头不是’FFD8’。

样本代码(修正后)

var options = {
    uri: "http://local_nginx_server_ip/globalipcam_resize_snap",
    encoding: null
};

如果省略了encoding(即省略了”encoding: null”行),那么看起来在二进制编辑器中头部不会变成”FFD8″,这可能是由于UTF-8 BOM的影响。
“encoding: null”似乎意味着不进行编码。

UTF-8 BOMは"EFBBBF"のようだ。でもバイナリエディタで"EFBFBDEF..."になる理由は現時点では不明。

利用修正后的源代码保存的snap.jpg是…

正しいsnap.png

首个字节是”FFD8″,并且在图像查看器中成功显示。

广告
将在 10 秒后关闭
bannerAds