Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

Η λήψη αρχείων σε τοπικό αποθηκευτικό χώρο αντί για τη διατήρησή τους σε αποθήκευση στο cloud έχει πολλά πλεονεκτήματα. Αυτά περιλαμβάνουν ευκολότερη πρόσβαση, πρόσβαση χωρίς σύνδεση στο διαδίκτυο και πλήρη ιδιοκτησία των δεδομένων σας.

Μπορείτε να κάνετε λήψη μεμονωμένων και πολλαπλών αρχείων χρησιμοποιώντας ενσωματωμένες λειτουργικές μονάδες Node.js. Μπορείτε επίσης να χρησιμοποιήσετε μια βιβλιοθήκη τρίτου κατασκευαστή, για να επιτύχετε τα ίδια αποτελέσματα.

Λήψη αρχείων χωρίς βιβλιοθήκη τρίτου μέρους

Για να κάνετε λήψη ενός αρχείου χρησιμοποιώντας το Node.js, χωρίς τη βοήθεια πακέτων τρίτων, θα χρειαστείτε τρεις βασικές μονάδες Node.js: fs, https, και μονοπάτι.

ο fs Η ενότητα υποστηρίζει πολλές εργασίες αρχείων, όπως ανάγνωση, δημιουργία, ενημέρωση, αφαίρεση και μετονομασία. ο https Η ενότητα δημιουργεί έναν διακομιστή ιστού για να χειρίζεται αιτήματα και να παρέχει απαντήσεις. ο

instagram viewer
μονοπάτι Η ενότητα παρέχει έναν τρόπο αλληλεπίδρασης με διαδρομές καταλόγου και αρχείων.

Χρησιμοποιώντας αυτές τις λειτουργικές μονάδες, μπορείτε να στείλετε ένα αίτημα HTTP GET για πρόσβαση σε έναν πόρο αρχείου από έναν διακομιστή web και στη συνέχεια να δημιουργήσετε ένα αντίγραφο του πόρου στο τοπικό σας σύστημα.

Για να ξεκινήσετε, εισαγάγετε τις απαιτούμενες ενότητες:

συνθ https = απαιτώ('https');
συνθ fs = απαιτώ('fs');
συνθ μονοπάτι = απαιτώ('μονοπάτι');

Θα χρειαστεί να χρησιμοποιήσετε το όνομα αρχείου από τη διεύθυνση URL ως καλό προεπιλεγμένο όνομα για να το αποθηκεύσετε. Μπορείτε να χρησιμοποιήσετε τη μονάδα διαδρομής .basename() μέθοδος λήψης του ονόματος ενός αρχείου από τη διεύθυνση URL του. Αυτή η μέθοδος παίρνει ένα όρισμα διαδρομής και επιστρέφει το τελευταίο τμήμα μιας διαδρομής.

Για παράδειγμα:

συνθ όνομα αρχείου = path.basename (url);

Στη συνέχεια, ζητήστε το αρχείο από τον διακομιστή καλώντας το https.get() μέθοδος. Αυτή η μέθοδος παίρνει τη διεύθυνση URL ως πρώτο όρισμα και μια συνάρτηση επανάκλησης για την απόκριση ως δεύτερο όρισμα

Πέρνα το url μεταβλητή ως πρώτο όρισμα και στη συνέχεια συνάρτηση επανάκλησης για επεξεργασία όταν αυτή η μέθοδος λαμβάνει μια ροή απόκρισης:

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

Στη λειτουργία επανάκλησης, μπορείτε να χρησιμοποιήσετε το fs.createWriteStream() μέθοδο για τη δημιουργία μιας νέας εγγράψιμης ροής, περνώντας το όνομα αρχείου μεταβλητή ως όρισμα.

Για παράδειγμα:

συνθ fileStream = fs.createWriteStream (όνομα αρχείου);
res.σωλήνας(fileStream);

ο createWriteStream() Η μέθοδος διευκολύνει τη διαδικασία εγγραφής δεδομένων σε ένα αρχείο, ειδικά όταν χειρίζεστε μεγάλα κομμάτια δεδομένων.

ο σωλήνας() Στη συνέχεια, η μέθοδος στέλνει τη ροή δεδομένων απόκρισης GET στο fileStream αντικείμενο.

Για να καταγράψετε ένα μήνυμα στην κονσόλα μετά την ολοκλήρωση της λήψης του αρχείου από το σενάριο, επισυνάψτε a .επί() εκπομπός συμβάντων στο fileStream μεταβλητός:

fileStream.on('φινίρισμα', () => {
fileStream.Κλείσε();
κονσόλα.κούτσουρο("Η λήψη ολοκληρώθηκε");
});

Το αντικείμενο fileStream εκπέμπει α φινίρισμα συμβάν όταν έχει γράψει όλα τα δεδομένα στο αρχείο. Πιάστε αυτό μέσω του .επί() μέθοδο και παρέχετε μια συνάρτηση επανάκλησης για να κλείσετε το fileStream και καταγράψτε ένα μήνυμα στην κονσόλα.

Για καλύτερη εκτέλεση και αποτελεσματική επαναχρησιμοποίηση σεναρίου, τυλίξτε αυτόν τον κώδικα σε μια συνάρτηση που λαμβάνει τη διεύθυνση URL ως όρισμα:

λειτουργίαλήψη αρχείου(url) {
συνθ όνομα αρχείου = path.basename (url);

https.get (url, (res) => {
συνθ fileStream = fs.createWriteStream (όνομα αρχείου);
res.σωλήνας(fileStream);

fileStream.on('φινίρισμα', () => {
fileStream.Κλείσε();
κονσόλα.κούτσουρο("Η λήψη ολοκληρώθηκε")
});
})
}

Για να εκτελέσετε τη λειτουργία, καλέστε την και περάστε τη διεύθυνση URL του αρχείου που θέλετε να κατεβάσετε:

λήψη αρχείου([διεύθυνση url αρχείου]);

Για να εκτελέσετε το σενάριο, ανοίξτε το τερματικό σας και εισάγετε κόμβος ακολουθούμενο από το όνομα του αρχείου JavaScript:

κόμβος[όνομα σεναρίου]

Αυτό το σενάριο θα κατεβάσει τη διεύθυνση URL του αρχείου που μεταβιβάσατε στο λήψη αρχείου () και αποθηκεύστε το στον κατάλογο εργασίας σας.

Χειρισμός σφαλμάτων κατά τη λήψη αρχείων

Στο Node.js, ενδέχεται να προκύψουν συγκεκριμένα σφάλματα, όπως η εγγραφή στη ροή, η κακή σύνδεση της υπηρεσίας ή προβλήματα με το ίδιο το αρχείο κατά τη λήψη αρχείων. Είναι σημαντικό να καταγράφετε μηνύματα σφάλματος όταν συμβαίνουν αυτά τα σφάλματα για να μπορέσετε να αντιμετωπίσετε το πρόβλημα.

Δοκίμασε/Πιάστε Μπλοκ

Ένα μπλοκ try-catch είναι μια δομή προγραμματισμού που σας επιτρέπει να χειρίζεστε πιθανά σφάλματα και εξαιρέσεις στον κώδικά σας.

Τα μπλοκ try-and-catch αποτελούν το block try...catch. Ο κώδικας του μπλοκ δοκιμής εκτελείται πρώτος και ο κώδικας του μπλοκ catch εκτελείται εάν το μπλοκ δοκιμής κάνει εξαίρεση.

δοκιμάστε {
λήψη αρχείου([διεύθυνση url αρχείου]);
} σύλληψη (λάθος) {
κονσόλα.log (σφάλμα);
}

Χρησιμοποιήστε ένα μπλοκ try/catch για να βεβαιωθείτε ότι μπορείτε να εντοπίσετε τυχόν σφάλματα που σχετίζονται με τη λήψη. Στη συνέχεια, μπορείτε να χειριστείτε οποιοδήποτε σφάλμα είναι απαραίτητο, όπως να το καταγράψετε στην κονσόλα ή να δοκιμάσετε ξανά τη λήψη.

Κωδικός κατάστασης απόκρισης HTTP

Οι κωδικοί κατάστασης για απαντήσεις HTTP δείχνουν εάν ένα συγκεκριμένο αίτημα HTTP έχει εκτελεστεί με επιτυχία.

Για παράδειγμα:

https.get (url, (res) => {
συνθ code = res.statusCode();
κονσόλα.log (κωδικός)
συνθ fileStream = fs.createWriteStream (όνομα αρχείου);
});

Εάν το αίτημα επιστρέψει έναν κωδικό κατάστασης εκτός του εύρους επιτυχίας, 200-299, υπήρξε πρόβλημα με το αίτημα. Στη συνέχεια, ελέγξτε τον κωδικό κατάστασης HTTP αναζητήστε τη σημασία του κωδικού κατάστασης για την αντιμετώπιση του σφάλματος όπως απαιτείται.

Λήψη πολλών αρχείων

Μπορείτε να κάνετε λήψη πολλών αρχείων ταυτόχρονα περνώντας τις διευθύνσεις URL αρχείων ως ορίσματα κατά την εκτέλεση κόμβος [όνομα σεναρίου]. Για να εκτελέσετε αυτήν την εργασία, πρέπει να τροποποιήσετε ορισμένα μέρη του σεναρίου σας.

Στο JavaScript, τα ορίσματα περνούν παράλληλα με το κόμβος Οι εντολές είναι διαθέσιμες στο process.argv, μια ιδιότητα του καθολικού αντικειμένου Node.js. Αυτή η ιδιότητα επιστρέφει έναν πίνακα ορισμάτων της γραμμής εντολών. Το πρώτο στοιχείο σε αυτόν τον πίνακα πρέπει να είναι κόμβος, την πραγματική εντολή που εκτελείτε. Το δεύτερο θα είναι το όνομα αρχείου του σεναρίου και, στη συνέχεια, κάθε επόμενο όρισμα θα πρέπει να είναι μια διεύθυνση URL.

Για να κάνετε λήψη πολλών αρχείων ταυτόχρονα, αποθηκεύστε τη συστοιχία από διαδικασία.argv σε μια μεταβλητή. Στη συνέχεια, εκτελέστε τη μέθοδο slice() για να αφαιρέσετε τα δύο πρώτα στοιχεία, που δεν είναι URL:

συνθ args = διεργασία.argv;
συνθ urls = args.slice(2);

ο φέτα() μέθοδος δημιουργεί έναν νέο πίνακα από επιλεγμένα στοιχεία ενός πίνακα. Αυτή η μέθοδος επιλέγει από μια καθορισμένη αρχή σε ένα καθορισμένο (μη περιεκτικό) τέλος.

Σε αυτήν την περίπτωση, το πέρασμα μιας τιμής 2 αφαιρεί το κόμβος όνομα εντολής και το όνομα αρχείου του σεναρίου σας.

Τελικά, χρησιμοποιώντας τη μέθοδο χάρτη JavaScript, περάστε κάθε στοιχείο στο urls συστοιχία σε λήψη αρχείου ():

urls.map(url =>{
λήψη αρχείου (url)
});

Για να εκτελέσετε τον κωδικό, εισαγάγετε το κόμβος εντολή μαζί με το όνομα του αρχείου JavaScript και τις διευθύνσεις URL που θέλετε να κατεβάσετε:

κόμβος[όνομα σεναρίου]url1url2url3

Χρήση βιβλιοθήκης τρίτων

Μπορείτε επίσης να κάνετε λήψη αρχείων χρησιμοποιώντας μια βιβλιοθήκη τρίτου κατασκευαστή, όπως το npm Κατεβάστε πακέτο.

Μέσα στον κατάλογο σεναρίων, εκτελέστε την ακόλουθη εντολή npm για να εγκαταστήσετε το Κατεβάστε πακέτο:

npm εγκαθιστώ Κατεβάστε

Απαιτήστε το πακέτο λήψης στο σενάριο σας και, στη συνέχεια, αποθηκεύστε τα ορίσματα της γραμμής εντολών σε έναν πίνακα:

συνθ λήψη = απαιτώ('Κατεβάστε');
συνθ args = διεργασία.argv;
συνθ urls = args.slice(2);

Τώρα μπορείτε να χρησιμοποιήσετε το Κατεβάστε βιβλιοθήκη για λήψη αρχείων. Μπορείτε να το κάνετε αυτό με διάφορους τρόπους, ανάλογα με τον συγκεκριμένο στόχο σας.

Για παράδειγμα:

ασυγχρονισμόςλειτουργίαλήψη αρχείου(urls){
αναμένωΥπόσχεση.all (urls.map((url) => λήψη (url, "αρχεία")))
};

λήψηΑρχείου (urls);

Δηλώστε το λήψη αρχείου λειτουργούν ως ασυγχρονισμόςκαι δημιουργήστε ένα Υπόσχεση να περιμένετε μέχρι να ολοκληρωθεί η συγκεκριμένη εργασία με το αναμένω λέξη-κλειδί. Χαρτογραφήστε το urls συστοιχία στο Κατεβάστε λειτουργία και περάστε το όνομα ενός τοπικού φακέλου—"αρχεία", σε αυτήν την περίπτωση—για αποθήκευση των αρχείων.

Λήψη αρχείων στο τοπικό σύστημα αρχείων

Οι ενσωματωμένες λειτουργίες του Node, όπως το fs και το https, διευκολύνουν τη σύνταξη ενός προγράμματος λήψης αρχείων. Για να το κάνετε ακόμα πιο εύκολο, μπορείτε να χρησιμοποιήσετε μια λειτουργική μονάδα τρίτου κατασκευαστή, όπως η λήψη.

Και οι δύο μέθοδοι σάς επιτρέπουν να κάνετε λήψη αρχείων από έναν απομακρυσμένο διακομιστή και να τα αποθηκεύσετε στο τοπικό σύστημα αρχείων. Θα πρέπει να επιλέξετε την καλύτερη μέθοδο για τις ανάγκες σας και να τη χρησιμοποιήσετε στην επόμενη εφαρμογή Node.js.