2017-11-13 9 views
0

request을 사용하여 몇 가지 파일을 다운로드하려고하는데 확장명을 찾는 방법을 모르겠습니다. 일부는 이미지이고, 일부는 소리이며, 일부는 비디오이지만, 모두 확장자가없는 URL에서옵니다.Node.js 및 Request.js : 다운로드 할 파일 확장명을 찾으시겠습니까?

const request = require("request"); 

request.get({ 
    url: "http://example.com/unknownextension", 
}) 
.on("error", function(error) { 
    console.log(error); 
}) 
.pipe(fs.createWriteStream("files/what.extension")); 

이 웹 사이트를 방문하면 잘 다운로드됩니다. Google 드라이브 링크와 같은 것을 생각해보세요.

유효한 확장명이 아니면 이러한 파일을 열 수 없으므로 도움을 받으시기 바랍니다.

답변

1

헤더를 통해 파일의 유형을 보내야 웹 사이트의 응답, 가장 가능성이 content-disposition 또는

content-type 


const request = require("request"); 
request.get({ 
    url: "http://example.com/unknownextension", 
}) 
.on("error", function(error) { 
    console.log(error); 
}) 
.on('response', function (res) { 
    res.pipe(fs.createWriteStream("files/what." + res.headers['content-type'].split('/')[1])); 
// it could also be content-dispostion or any other header, please check the headers first 

}); 
+0

이 주셔서 감사합니다 파일 형식을 설치, 그것은 내용 - 처리에 있었다, 그러나 나는 파일 확장자 얻을 수있는 이상한 방법했다 :'result.headers [ "내용 처리를" ] .split ("."). pop(). slice (0, -1)' – MysteryPancake

1

파일 형식 NPM은 당신의 목적을 해결합니다.

NPM

const fileType = require('file-type'); 
http.get(url, res => { 
res.once('data', chunk => { 
    res.destroy(); 
    console.log(fileType(chunk)); 
    //=> {ext: 'One of the supported file types', mime: 'The MIME type'} 
});});