我正在尝试编写脚本以使用node.js下载图像。这是我到目前为止的内容:var maxLength = 10 // 10mbvar download = function(uri, callback) { http.request(uri) .on('response', function(res) { if (res.headers['content-length'] > maxLength*1024*1024) { callback(new Error('Image too large.')) } else if (!~[200, 304].indexOf(res.statusCode)) { callback(new Error('Received an invalid status code.')) } else if (!res.headers['content-type'].match(/image/)) { callback(new Error('Not an image.')) } else { var body = '' res.setEncoding('binary') res .on('error', function(err) { callback(err) }) .on('data', function(chunk) { body += chunk }) .on('end', function() { // What about Windows?! var path = '/tmp/' + Math.random().toString().split('.').pop() fs.writeFile(path, body, 'binary', function(err) { callback(err, path) }) }) } }) .on('error', function(err) { callback(err) }) .end();}但是,我想使它更强大:有图书馆这样做并且做得更好吗?响应头是否有可能说谎(关于长度,关于内容类型)?我还应该关注其他状态代码吗?我应该麻烦重定向吗?我想我在某处读到了binary编码将被弃用。那我该怎么办?我怎样才能在Windows上使用它?还有其他方法可以使此脚本更好吗?原因:对于类似于imgur的功能(用户可以给我一个URL),我下载了该图像,然后以多种尺寸重新托管该图像。
3 回答
- 3 回答
- 0 关注
- 633 浏览
添加回答
举报
0/150
提交
取消