So überprüfen Sie, ob der Download in NodeJS erfolgreich ist

WBOY
Freigeben: 2023-05-17 09:31:06
Original
769 Leute haben es durchsucht

NodeJS ist eine JavaScript-Programmiersprache, die auf der Serverseite ausgeführt wird. Ihre Entstehung erleichtert die Entwicklung von Webanwendungen erheblich. Unter vielen NodeJS-Anwendungen ist das Herunterladen der häufigste Vorgang, und die Überprüfung, ob ein Download erfolgreich ist, ist auch bei der Webentwicklung ein unvermeidliches Problem. In diesem Artikel wird erläutert, wie Sie mit NodeJS überprüfen, ob der Download erfolgreich ist.

In NodeJS können Sie http, https, request und andere Module zum Herunterladen von Dateien verwenden. Verwenden Sie das http- oder https-Modul, um Remote-Dateien herunterzuladen und lokal zu speichern. Das Anforderungsmodul ist weiter fortgeschritten und kann Vorgänge wie Umleitung, Domänennamenerfassung und Cookies automatisch verarbeiten.

Unabhängig davon, welches Modul verwendet wird und ob der Dateidownload erfolgreich ist oder fehlschlägt, kann der Downloadstatus anhand des statusCode-Attributs des zurückgegebenen Objekts beurteilt werden. Wenn statusCode gleich 200 ist, bedeutet dies, dass der Download erfolgreich war. Wenn statusCode anderen Werten entspricht, bedeutet dies, dass der Download fehlgeschlagen ist.

Verwenden Sie beispielsweise das http-Modul, um eine Datei herunterzuladen:

const http = require('http');
const fs = require('fs');

const file = fs.createWriteStream("file.pdf"); // 创建文件写入流
const request = http.get("http://example.com/file.pdf", function(response) {
    response.pipe(file); // 将响应数据写入文件
    console.log("statusCode: ", response.statusCode); // 输出状态码
});
Nach dem Login kopieren

Wenn im obigen Code die Antwort erfolgreich zurückgegeben wird, werden ihre Daten in der Datei.pdf gespeichert Datei und gedruckter Ausgabestatuscode. Wenn statusCode gleich 200 ist, bedeutet dies, dass der Download erfolgreich war. Wenn der Download fehlschlägt, muss dies durch Abhören des Ereignisses „error“ behoben werden.

Im Vergleich zum http-Modul ist die Download-Überprüfung des Anforderungsmoduls bequemer. Beispiel:

const fs = require('fs');
const request = require('request');

const file = fs.createWriteStream('file.pdf'); // 创建文件写入流
request.get('http://example.com/file.pdf') // 发送请求
    .on('response', function(response) { // 监听响应事件
        if(response.statusCode == 200) { // 判断响应状态码
            response.pipe(file); // 将响应数据写入文件
        }
    })
    .on('error', function(error) { // 监听下载错误事件
        console.log(error);
    });
Nach dem Login kopieren

In diesem Beispiel verwenden Sie die Methode „request.get“, um eine Anfrage zu senden, und hören Sie auf das Ereignis „response“, um festzustellen, ob der Download erfolgreich ist. Wenn der StatusCode der Antwort 200 ist, bedeutet dies, dass der Download erfolgreich war. Download-Fehler müssen auch durch Abhören des „error“-Ereignisses behandelt werden.

Beim Herunterladen großer Dateien machen wir uns möglicherweise mehr Sorgen über den Download-Fortschritt. Das Anforderungsmodul kann jedes heruntergeladene Datenelement abrufen, indem es das „Daten“-Ereignis abhört, um den Download-Fortschritt zu berechnen.

Um beispielsweise eine Datei mit etwa 100 MB herunterzuladen:

const fs = require('fs');
const request = require('request');

const file = fs.createWriteStream('file.pdf'); // 创建文件写入流
const url = 'http://example.com/file.pdf';
let receivedSize = 0;

const req = request.get(url); // 发送请求
req.on('data', function(data) { // 监听数据事件
    receivedSize += data.length; // 计算已接收的文件大小
    const progress = (receivedSize / req.response.headers['content-length']) * 100; // 计算下载进度
    console.log('progress:', progress.toFixed(2) + '%'); // 打印下载进度
})
.on('error', function(error) { // 监听下载错误事件
    console.log(error);
})
.pipe(file); // 将响应数据写入文件
Nach dem Login kopieren

In diesem Beispiel verwenden Sie req.response.headers['content-length'], um die Gesamtgröße zu erhalten Der Download-Fortschritt wird durch Berechnung der empfangenen Datenmenge und der Gesamtdateigröße ermittelt. Verwenden Sie gleichzeitig das Ereignis req.on('data'), um den Datenstrom zu überwachen und jedes heruntergeladene Datenelement abzurufen.

Während wir überprüfen, ob der Download erfolgreich war, müssen wir möglicherweise auch die Integrität der Datei überprüfen. In NodeJS können Sie auch die vom fs-Modul bereitgestellten Methoden verwenden, um Datei-Hashes zu erstellen, Hashes zu vergleichen usw., um den MD5-Wert der Datei zu überprüfen und die Integrität der Datei sicherzustellen.

Um beispielsweise den MD5-Wert einer heruntergeladenen Datei zu überprüfen:

const fs = require('fs');
const crypto = require('crypto');

const file = 'file.pdf';
const expectedHash = '9d7d60e575578bcf5c0754510d105efa'; // 文件的期望MD5值
const hash = crypto.createHash('md5');
const stream = fs.createReadStream(file);

stream.on('data', function(data) {
    hash.update(data); // 更新哈希值
});
stream.on('end', function() {
    const digest = hash.digest('hex'); // 获取文件哈希值
    console.log('digest:', digest);
    console.log('hash comparison:', (expectedHash === digest)); // 比较期望的文件哈希值和实际哈希值
});
Nach dem Login kopieren

In diesem Beispiel verwenden Sie die Methode fs.createReadStream, um den Dateistream abzurufen und crypto.createHash zu übergeben ('md5') erstellt ein MD5-Hash-Objekt und verwendet das Ereignis stream.on('data'), um den Hash-Wert kontinuierlich zu aktualisieren. Nachdem das Datei-Streaming abgeschlossen ist, wird der tatsächliche Datei-Hash-Wert über hash.digest('hex') abgerufen und schließlich der erwartete und der tatsächliche Hash-Wert verglichen, um die Integrität der Datei zu überprüfen.

Beim Herunterladen einer Datei ist die Überprüfung, ob der Download erfolgreich war, nur der erste Schritt, und die Überprüfung der Integrität der Datei ist der Schlüssel zur Gewährleistung der Datensicherheit. Durch die oben vorgestellten Methoden können wir den Download-Erfolg und die Integrität von Dateien in NodeJS schnell überprüfen und so die Sicherheit und Stabilität von Webanwendungen verbessern.

Das obige ist der detaillierte Inhalt vonSo überprüfen Sie, ob der Download in NodeJS erfolgreich ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!