mio attuale metodo è questo:In Node.js, dato un URL, come posso verificare se è un 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 ?????
});
});
L'immagine è ovviamente una foto, ma node-mime
dice che è application/octet-stream
. Perché?
Nota: - Non voglio fare affidamento sul tipo di contenuto delle intestazioni di risposta, perché in base alla mia esperienza, a volte tali intestazioni di risposta sono impostate in modo errato ... e non determinano il vero tipo di file. (questo è il motivo per cui l'ho salvato su un file e quindi ho determinato il nodo per me!)
Desidero sapere il modo migliore per determinare se un file è un'immagine, con 0 margine di errore.
Modifica: ho appena realizzato che node-mime non è "magico". Esso controlla solo per l'estensione :(...
Edit2: Ho trovato questo: https://github.com/SaltwaterC/mime-magic
cosa c'è di sbagliato con il controllo gli ultimi tre caratteri del uri? – Raynos
nota che se stai andando a recuperare il file per controllarlo ma non memorizzarlo, potrebbe essere meglio usare una richiesta di intervallo per i primi kilobyte piuttosto che recuperare l'intero file. –