Node

2016-03-28 25 views
-2

'da HTTP veya HTTPS ile dosya indirme Dosyayı http kitaplığına ve https kitaplığına sahip bir dosyayı nasıl indireceğinizi biliyorum.Node

Ancak, kullanıcıya her ikisini yapma seçeneğine vermek istersem ne yapmalıyım? Bu

var downloadFile = function (url) { 
    var protocol = url.replace(/^(.*?):.*/, '$1'); 
    var protocolLibrary = require(protocol); 
    protocolLibrary.get(url, function (response) { ... }); 
}; 

iyi yolu bunu yapmak için mi böyle

Şu anda görünen kodu var mı?

+0

Yani, büyük soru burada nedir? Kullanıcının ne istediğine bağlı olarak 'http.get()' veya 'https.get()' kullandığını zaten biliyorsunuz. Başka hangi konuda yardıma ihtiyacınız var? – jfriend00

+0

Evet, sunucu tarafı. İstemcide kullanıcının bir URL'ye girdiği basit bir formum var. Form gönderildiğinde, 'downloadFile (url)' denir. – merlinpatt

+0

Peki, soru nedir? URL'ye bakın ve zaten yapmaya çalıştığınız gibi 'http.get()' veya 'https.get()' ı arayın. – jfriend00

cevap

0

onlar yolunu biliyordu yoksa require() arama yolunda zaten eğer son kullanıcı sunucu üzerinde neredeyse varolan herhangi bir düğüm modülünü neden olabilecek devasa güvenlik deliği açık bırakılan yaptıklarını yolu (çalıştırılmak üzere).

Böyle bir önceden yüklenmiş pek azı için seçilebilir kütüphaneleri sınırlayabilir:

var urlParser = require('url'); 

var supportedLibraries = { 
    "http:": require('http'), 
    "https:": require('https') 
}; 

function downloadFile(url) { 
    var parsed = urlParser.parse(url); 
    var lib = supportedLibraries[parsed.protocol || "http:"]; 
    if (lib) { 
     lib.get(url, function (response) { ... }); 
    } else { 
     // error for invalid protocol 
    } 
}; 
+0

Dosya sunmaya çalışmıyorum. Onları indiriyorum. Şimdi soruyu güncelleme – merlinpatt

+0

İstemci için dosya indirmiyorum. İndirmek için sunucuya ihtiyacım var ve sonra da S3 – merlinpatt

+0

@merlinpatt'a yüklüyorum - Şu anki çözümüm, sorununuza cevap olarak mı çalışıyor? Eğer öyleyse, lütfen cevabınızın solundaki yeşil onay işaretini işaretleyerek bunu (veya başka bir cevabı) seçtiğiniz cevabınız olarak işaretleyiniz ve bu, sorunuzun yanıtlandığını ve size kazanabileceğiniz bazı itibar puanları kazanacağını topluma gösterecektir. Zamanla burada daha fazla ayrıcalıklar var. – jfriend00