我正在嘗試編寫腳本以使用node.js下載圖像。這是我到目前為止的內(nèi)容: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();}但是,我想使它更強(qiáng)大:有圖書館這樣做并且做得更好嗎?響應(yīng)頭是否有可能說謊(關(guān)于長(zhǎng)度,關(guān)于內(nèi)容類型)?我還應(yīng)該關(guān)注其他狀態(tài)代碼嗎?我應(yīng)該麻煩重定向嗎?我想我在某處讀到了binary編碼將被棄用。那我該怎么辦?我怎樣才能在Windows上使用它?還有其他方法可以使此腳本更好嗎?原因:對(duì)于類似于imgur的功能(用戶可以給我一個(gè)URL),我下載了該圖像,然后以多種尺寸重新托管該圖像。
- 3 回答
- 0 關(guān)注
- 658 瀏覽
添加回答
舉報(bào)
0/150
提交
取消