Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi gerçekleştirdiğinizde, bir ortaklık komisyonu kazanabiliriz. Devamını oku.

Dosyaları bulut depolama yerine yerel depolamaya indirmenin birçok avantajı vardır. Bunlar, daha kolay erişim, internet bağlantısı olmadan erişim ve verilerinizin tam mülkiyetini içerir.

Yerleşik Node.js modüllerini kullanarak tekli ve çoklu dosyaları indirebilirsiniz. Aynı sonuçları elde etmek için bunun yerine bir üçüncü taraf kitaplığı da kullanabilirsiniz.

Üçüncü Taraf Kitaplığı Olmadan Dosyaları İndirme

Üçüncü taraf paketlerin yardımı olmadan Node.js kullanarak bir dosya indirmek için üç temel Node.js modülüne ihtiyacınız olacak: fs, https, Ve yol.

bu fs modül, okuma, oluşturma, güncelleme, kaldırma ve yeniden adlandırma gibi birçok dosya görevini destekler. bu https modül, istekleri işlemek ve yanıtları iletmek için bir web sunucusu oluşturur. bu yol modül, dizin ve dosya yollarıyla etkileşim kurmanın bir yolunu sağlar.

instagram viewer

Bu modülleri kullanarak, bir web sunucusundan bir dosya kaynağına erişmek için bir HTTP GET isteği gönderebilir ve ardından yerel sisteminizde kaynağın bir kopyasını oluşturabilirsiniz.

Başlamak için gerekli modülleri içe aktarın:

sabit https = gerekmek("https");
sabit fs = gerekmek('fs');
sabit yol = gerekmek('yol');

Kaydetmek için URL'deki dosya adını iyi bir varsayılan ad olarak kullanmanız gerekecek. Yol modülünü kullanabilirsiniz. .basename() bir dosyanın adını URL'sinden alma yöntemi. Bu yöntem bir yol bağımsız değişkeni alır ve bir yolun son bölümünü döndürür.

Örneğin:

sabit dosya adı = yol.taban adı (url);

Ardından, dosyayı çağırarak sunucudan talep edin. https.get() yöntem. Bu yöntem, URL'yi ilk bağımsız değişken olarak ve yanıt için ikinci bağımsız değişken olarak bir geri çağırma işlevini alır.

Geç url ilk bağımsız değişken olarak değişken ve ardından bu yöntem bir yanıt akışı aldığında işlenecek bir geri arama işlevi:

https.get (url, (res) => {
})

Geri arama işlevinde, fs.createWriteStream() yeni bir yazılabilir akış oluşturmak için yöntem dosya adı bağımsız değişken olarak değişken.

Örneğin:

sabit fileStream = fs.createWriteStream (dosyaadı);
res.boru(dosya akışı);

bu createWriteStream() yöntemi, özellikle büyük miktarda veriyle uğraşırken bir dosyaya veri yazma sürecini kolaylaştırır.

bu boru() yöntem daha sonra GET yanıt veri akışını dosya akışı nesne.

Komut dosyası dosyayı indirmeyi bitirdikten sonra konsola bir mesaj kaydetmek için bir mesaj ekleyin. .Açık() olay yayıcı dosya akışı değişken:

fileStream.on('sona ermek', () => {
dosya akışı.kapalı();
konsol.kayıt('İndirme tamamlandı');
});

fileStream nesnesi bir sona ermek tüm verileri dosyaya yazdığında olay. Bunu aracılığıyla yakala .Açık() yöntemi ve kapatmak için bir geri arama işlevi sağlayın dosya akışı ve konsola bir mesaj kaydedin.

Daha iyi uygulama için ve verimli betik yeniden kullanılabilirliği, bu kodu URL'yi bağımsız değişkeni olarak alan bir işleve sarın:

işlevdosyayı indir(url) {
sabit dosya adı = yol.taban adı (url);

https.get (url, (res) => {
sabit fileStream = fs.createWriteStream (dosyaadı);
res.boru(dosya akışı);

fileStream.on('sona ermek', () => {
dosya akışı.kapalı();
konsol.kayıt('İndirme tamamlandı')
});
})
}

İşlevi çalıştırmak için onu arayın ve indirmek istediğiniz dosyanın URL'sini iletin:

dosyayı indir([dosya URL'si]);

Komut dosyasını çalıştırmak için terminalinizi açın ve girin düğüm ardından JavaScript dosyasının adı:

düğüm[komut dosyası adı]

Bu betik, şuraya ilettiğiniz dosya URL'sini indirecektir: dosyayı indir() işlev ve onu çalışma dizininize kaydedin.

Dosyaları İndirirken Hataları İşleme

Node.js'de, dosyalar indirilirken akışa yazma, zayıf hizmet bağlantısı veya dosyanın kendisiyle ilgili sorunlar gibi belirli hatalar meydana gelebilir. Sorunu çözebilmek için bu hatalar meydana geldiğinde hata mesajlarını günlüğe kaydetmek çok önemlidir.

Dene/Yakala Bloğu

Bir try-catch bloğu, kodunuzdaki olası hataları ve istisnaları işlemenizi sağlayan bir programlama yapısıdır.

Try-and-catch blokları try...catch bloğunu oluşturur. Try bloğunun kodu önce çalışır ve try bloğu bir istisna atarsa ​​catch bloğunun kodu çalışır.

denemek {
dosyayı indir([dosya URL'si]);
} yakalamak (hata) {
konsol.log (hata);
}

İndirmeyle ilgili hataları yakalayabilmeniz için bir try/catch bloğu kullanın. Ardından, konsolda oturum açmak veya indirmeyi yeniden denemek gibi herhangi bir hatayı gerektiği gibi işleyebilirsiniz.

HTTP Yanıt Durum Kodu

HTTP yanıtları için durum kodları, belirli bir HTTP isteğinin başarıyla gerçekleştirilip gerçekleştirilmediğini gösterir.

Örneğin:

https.get (url, (res) => {
sabit kod = res.statusCode();
konsol.log (kod)
sabit fileStream = fs.createWriteStream (dosyaadı);
});

İstek, başarı aralığının dışında bir durum kodu döndürürse, 200-299, istekle ilgili bir sorun oluştu. HTTP durum kodunu kontrol edin, ardından durum kodunun anlamına bakın Hatayı gerektiği gibi ele almak için.

Birden Fazla Dosya İndirme

Çalıştırırken dosya URL'lerini bağımsız değişken olarak ileterek birden çok dosyayı aynı anda indirebilirsiniz. düğüm [komut dosyası adı]. Bu görevi gerçekleştirmek için betiğinizin belirli kısımlarını değiştirmeniz gerekir.

JavaScript'te, yanında iletilen bağımsız değişkenler düğüm komutu, global Node.js nesnesinin bir özelliği olan process.argv'de mevcuttur. Bu özellik, komut satırı bağımsız değişkenlerinin bir dizisini döndürür. Bu dizideki ilk eleman olmalıdır düğüm, çalıştırdığınız asıl komut. İkincisi betik dosya adı olacaktır, ardından takip eden her bağımsız değişken bir URL olmalıdır.

Birden fazla dosyayı aynı anda indirmek için diziyi şu adresten kaydedin: işlem.argv bir değişkende. Ardından, URL olmayan ilk iki öğeyi kaldırmak için slice() yöntemini çalıştırın:

sabit args = işlem.argv;
sabit url'ler = args.slice(2);

bu dilim() method, bir dizideki seçili öğelerden yeni bir dizi oluşturur. Bu yöntem, belirtilen bir başlangıçtan belirtilen (dahil olmayan) bir sona kadar seçim yapar.

Bu durumda, 2 değerini geçmek, düğüm komut adı ve komut dosyanızın adı.

Nihayet, JavaScript'in harita yöntemini kullanarak, içindeki her öğeyi iletin url'ler dizisi dosyayı indir():

urls.map(url =>{
indirDosya (url)
});

Kodu çalıştırmak için şunu girin: düğüm JavaScript dosyanızın adı ve indirmek istediğiniz URL'lerle birlikte komut:

düğüm[komut dosyası adı]url1url2url3

Üçüncü Taraf Kitaplığı Kullanma

Npm gibi bir üçüncü taraf kitaplığı kullanarak da dosya indirebilirsiniz. indirmek paket.

Betik dizininizin içinde, yüklemek için aşağıdaki npm komutunu çalıştırın. indirmek paket:

npm düzenlemek indirmek

İndirilen paketi betiğinizde isteyin, ardından komut satırı argümanlarını bir diziye kaydedin:

sabit indir = gerekmek('indirmek');
sabit args = işlem.argv;
sabit url'ler = args.slice(2);

şimdi kullanabilirsiniz indirmek Dosyaları indirmek için kütüphane. Belirli hedefinize bağlı olarak bunu birkaç şekilde yapabilirsiniz.

Örneğin:

zaman uyumsuzişlevdosyayı indir(url'ler){
beklemekSöz.all (urls.map((url) => indir (url, "Dosyalar")))
};

indirDosya (url'ler);

beyan etmek dosyayı indir işlev olarak zaman uyumsuzve bir Söz belirli bir görev tamamlanana kadar beklemek beklemek anahtar kelime. harita url'ler dizisine indirmek işlevini kullanın ve yerel bir klasörün adını iletin—"Dosyalar", bu durumda—dosyaları depolamak için.

Dosyaları Yerel Dosya Sistemine İndirme

Düğümün fs ve https gibi yerleşik işlevleri, bir dosya indirici yazmayı kolaylaştırır. Bunu daha da kolaylaştırmak için indirme gibi bir üçüncü taraf modülü kullanabilirsiniz.

Her iki yöntem de dosyaları uzak bir sunucudan indirmenize ve bunları yerel dosya sistemine kaydetmenize olanak tanır. İhtiyaçlarınıza en uygun yöntemi seçmeli ve bir sonraki Node.js uygulamanızda kullanmalısınız.