我現在的方法是這樣的:在Node.js中,如果給出一個URL,我該如何檢查它是否爲jpg/png/gif?
var request = require('request');
var mime = require('mime');
var fs = require('fs');
var uri = 'http://www.sweetslyrics.com/images/img_gal/25646_christina-perri-213968.jpg';
request({
'method':'GET',
'uri': uri
},function(err, response,body){
var tmp_path = '/tmp/123456';
fs.writeFile(tmp_path, body, function(err) {
console.log(mime.lookup(tmp_path)); //application/octet-stream ?????
});
});
的圖像顯然是一個圖片,但node-mime
說,這是application/octet-stream
。爲什麼?
注: - 我不想依靠響應頭內容類型,因爲根據我的經驗,有時那些響應頭設置不正確......他們並不確定真正的文件類型。 (這就是爲什麼我把它保存到一個文件,然後讓node-mime爲我確定!)
我想知道確定文件是否爲圖像的最佳方式,並且有0的誤差範圍。
編輯:我只是意識到,節點模仿不是「魔術」。它只是檢查擴展:(...
EDIT2:我發現這一點:https://github.com/SaltwaterC/mime-magic
有什麼錯檢查URI的最後三個字符? – Raynos
請注意,如果您要獲取文件以進行檢查但不存儲該文件,則可能會更好地在前幾千字節範圍內使用範圍請求,而不是檢索整個文件。 –