Πώς να κατεβάσετε ένα αρχείο σε PHP

How Download File Php



Γενικά, δεν απαιτείται σενάριο PHP για λήψη ενός αρχείου με τις επεκτάσεις exe και φερμουάρ Το Εάν η θέση αρχείου αυτού του τύπου αρχείου έχει οριστεί στο href χαρακτηριστικό του στοιχείου αγκύρωσης, τότε το αρχείο πραγματοποιεί αυτόματη λήψη όταν ο χρήστης κάνει κλικ στο σύνδεσμο λήψης. Ορισμένα αρχεία, όπως π.χ. εικόνα αρχεία, PDF αρχεία, κείμενο αρχεία, CSV αρχεία, κ.λπ., δεν πραγματοποιούνται αυτόματες λήψεις και, αντίθετα, ανοίγουν στο πρόγραμμα περιήγησης όταν ο χρήστης κάνει κλικ στο σύνδεσμο λήψης. Αυτά τα αρχεία μπορούν να ληφθούν αναγκαστικά σε PHP χρησιμοποιώντας το αρχείο ανάγνωσης () λειτουργία που δεν πραγματοποιείται αυτόματη λήψη. Αυτό το σεμινάριο σας δείχνει πώς μπορείτε να κατεβάσετε βίαια οποιοδήποτε αρχείο χρησιμοποιώντας σενάριο PHP.

Ελέγξτε τους συνδέσμους λήψης

Αναφέρθηκε προηγουμένως ότι φερμουάρ και exe τα αρχεία κατεβαίνουν αυτόματα, χωρίς να χρησιμοποιείτε σενάριο PHP. Αρχικά, δημιουργήστε ένα αρχείο HTML με τον ακόλουθο κώδικα. Εδώ, τα τέσσερα στοιχεία αγκύρωσης ορίζονται για τη λήψη των τεσσάρων τύπων αρχείων. Αυτοί οι τύποι αρχείων περιλαμβάνουν αρχεία TEXT, ZIP, PDF και JPG.







Λήψη.html



< html >>
< κεφάλι >>
< τίτλος >>Λήψη αρχείων</ τίτλος >>
</ κεφάλι >>
< σώμα >>
< Π >>< προς το href='abc.txt'>>Λήψη αρχείου TEXT</ προς το >></ Π >>
< Π >>< προς το href='horizon.zip'>>Λήψη αρχείου ZIP</ προς το >></ Π >>
< Π >>< προς το href='lecture.pdf'>>Λήψη αρχείου PDF</ προς το >></ Π >>
< Π >>< προς το href='rose.jpg'>>Λήψη αρχείου JPG</ προς το >></ Π >>
</ σώμα >>
</ html >>

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




Εάν κάνετε κλικ στο αρχείο εικόνας, η εικόνα θα ανοίξει αυτόματα στο πρόγραμμα περιήγησης, όπως φαίνεται στην ακόλουθη έξοδο. Πρέπει να αποθηκεύσετε το αρχείο για να δημιουργήσετε ένα αντίγραφο του αρχείου εικόνας στην τοπική μονάδα δίσκου. Με τον ίδιο τρόπο, όταν κάνετε κλικ σε συνδέσμους αρχείων PDF και TEXT, το περιεχόμενο του αρχείου θα ανοίξει στο πρόγραμμα περιήγησης χωρίς λήψη του αρχείου. Η λύση σε αυτό το πρόβλημα είναι να κατεβάσετε το αρχείο με τη βία χρησιμοποιώντας την ενσωματωμένη PHP readfile () λειτουργία.





Λήψη αρχείου χρησιμοποιώντας τη λειτουργία readfile ()

ο readfile () Η συνάρτηση χρησιμοποιείται σε δέσμη ενεργειών PHP για τη βίαιη λήψη οποιουδήποτε αρχείου της τρέχουσας θέσης ή του αρχείου με τη διαδρομή του αρχείου. Η σύνταξη αυτής της συνάρτησης δίνεται παρακάτω.



Σύνταξη
int readfile (string $ filename [, bool $ use_include_path = false [, πόρος $ context]])

Αυτή η συνάρτηση μπορεί να πάρει τρία ορίσματα. Το πρώτο όρισμα είναι υποχρεωτικό και τα άλλα δύο ορίσματα είναι προαιρετικά. Το πρώτο επιχείρημα, $ όνομα αρχείου , αποθηκεύει το όνομα αρχείου ή το όνομα αρχείου με τη διαδρομή που θα γίνει λήψη. Η προεπιλεγμένη τιμή της δεύτερης παραμέτρου, $ use_include_path , είναι ψευδές και θα οριστεί σε αληθές εάν το όνομα αρχείου με τη διαδρομή χρησιμοποιείται στο πρώτο όρισμα. Το τρίτο επιχείρημα, περιβάλλον $ , χρησιμοποιείται για να υποδείξει τον πόρο ροής περιβάλλοντος. Αυτή η συνάρτηση επιστρέφει τον αριθμό των byte που διαβάζονται από το αρχείο που αναφέρεται στο πρώτο όρισμα. Οι χρήσεις αυτής της συνάρτησης φαίνονται στα ακόλουθα δύο παραδείγματα.

Παράδειγμα 1: Λήψη αρχείου με όνομα αρχείου

Σε αυτό το παράδειγμα, θα δημιουργήσουμε ένα αρχείο HTML με τον ακόλουθο κώδικα, όπου το όνομα του αρχείου θα περάσει ως παράμετρος της διεύθυνσης URL με όνομα μονοπάτι , και η τιμή αυτής της παραμέτρου θα περάσει στο όνομα PHP που ονομάζεται download.php Το

download2.html

< html >>
< κεφάλι >>
< τίτλος > Λήψη αρχείων</ τίτλος >>
</ κεφάλι >>
< σώμα >>
< Π >>< προς το href='download.php? path = abc.txt'> ΛήψηΚΕΙΜΕΝΟαρχείο</ προς το >></ Π >>
< Π >>< προς το href='download.php? path = horizon.zip'> Λήψη αρχείου ZIP</ προς το >></ Π >>
< Π >>< προς το href='download.php? path = lecture.pdf'> Λήψη αρχείου PDF</ προς το >></ Π >>
< Π >>< προς το href='download.php? path = rose.jpg'> Λήψη αρχείου JPG</ προς το >></ Π >>
</ σώμα >>
</ html >>

Θα δημιουργήσουμε το αρχείο PHP με τον ακόλουθο κώδικα για να το κατεβάσουμε με το ζόρι. Εδώ, το χαμένος) η συνάρτηση χρησιμοποιείται για να ελέγξει εάν το $ _GET [‘path’] ορίζεται. Εάν η μεταβλητή έχει οριστεί, το Το αρχείο υπάρχει() Η λειτουργία χρησιμοποιείται για να ελέγξει εάν το αρχείο υπάρχει στον διακομιστή. Στη συνέχεια, το επί κεφαλής() η συνάρτηση χρησιμοποιείται για να ορίσετε τις απαραίτητες πληροφορίες κεφαλίδας πριν χρησιμοποιήσετε το readfile () λειτουργία. ο βασικό όνομα () η συνάρτηση χρησιμοποιείται για την ανάκτηση του ονόματος αρχείου και το μέγεθος αρχείου() Η συνάρτηση χρησιμοποιείται για την ανάγνωση του μεγέθους του αρχείου σε byte, το οποίο θα εμφανιστεί στο παράθυρο διαλόγου ανοίγματος για λήψη του αρχείου. ο ξεπλύνετε() Η λειτουργία χρησιμοποιείται για την εκκαθάριση του buffer εξόδου. ο readfile () η συνάρτηση χρησιμοποιείται μόνο με το όνομα αρχείου, εδώ.

download.php



αν( χαμένος ($ _GET['μονοπάτι']))
{
// Διαβάστε το όνομα αρχείου
$ όνομα αρχείου = $ _GET['μονοπάτι']?
// Ελέγξτε ότι το αρχείο υπάρχει ή όχι
αν( Το αρχείο υπάρχει ($ όνομα αρχείου)) {

// Ορισμός πληροφοριών κεφαλίδας
επί κεφαλής ('Περιεχόμενο-Περιγραφή: Μεταφορά αρχείου')?
επί κεφαλής ('Τύπος περιεχομένου: εφαρμογή/οκτάδα-ροή')?
επί κεφαλής ('Cache-Control: no-cache, must-revalify')?
επί κεφαλής («Λήγει: 0»)?
επί κεφαλής ('Περιεχόμενο-Διάθεση: συνημμένο? όνομα αρχείου = 'Το βασικό όνομα ($ όνομα αρχείου)Το'' '')?
επί κεφαλής ('Περιεχόμενο-Μήκος:' Το μέγεθος αρχείου ($ όνομα αρχείου))?
επί κεφαλής ('Pragma: public')?

// Εκκαθάριση του buffer εξόδου συστήματος
ξεπλύνετε ()?

// Διαβάστε το μέγεθος του αρχείου
readfile ($ όνομα αρχείου)?

// Τερματισμός από το σενάριο
ο ()?
}
αλλού{
πέταξε έξω 'Το αρχείο δεν υπάρχει.'?
}
}
αλλού
πέταξε έξω 'Το όνομα αρχείου δεν έχει οριστεί.'
?>

Παραγωγή
Η ακόλουθη έξοδος θα εμφανιστεί αφού κάνετε κλικ στο σύνδεσμο λήψης του αρχείου εικόνας. Το μέγεθος του αρχείου του rose.jpg εικόνα είναι 27,2 KB , όπως φαίνεται στο παράθυρο διαλόγου. Μπορείτε να κατεβάσετε το αρχείο επιλέγοντας το Αποθηκεύσετε το αρχείο κουμπί ραδιοφώνου και πατώντας το Εντάξει κουμπί.

Παράδειγμα 2: Λήψη αρχείου με διαδρομή αρχείου

Εάν το αρχείο υπάρχει στη δεδομένη τοποθεσία αρχείου, θα πρέπει να αναφέρεται η διαδρομή του αρχείου στη διεύθυνση URL. Σε αυτό το παράδειγμα, θα δημιουργήσουμε ένα αρχείο HTML με τον ακόλουθο κώδικα, το οποίο θα περάσει το όνομα αρχείου με τη διαδρομή του αρχείου:

download3.html

< html >>
< κεφάλι >>
< τίτλος >>Λήψη αρχείων</ τίτλος >>
</ κεφάλι >>
< σώμα >>
< Π >>< προς το href='download.php? path = downloads/lecture.pdf'>>Λήψη αρχείου PDF</ προς το >></ Π >>
< Π >>< προς το href='download2.php? path = downloads/rose.jpg'>>Λήψη αρχείου JPG</ προς το >></ Π >>
</ σώμα >>
</ html >>

Θα δημιουργήσουμε ένα αρχείο PHP με τον ακόλουθο κώδικα για να κατεβάσουμε ένα αρχείο από τη διαδρομή του αρχείου. Ο κώδικας PHP στο προηγούμενο παράδειγμα θα τροποποιηθεί ελαφρώς για λήψη του αρχείου από τη δεδομένη διαδρομή. ο clearstatecache () Η λειτουργία χρησιμοποιείται για την εκκαθάριση της προσωρινής μνήμης που είχε αποθηκευτεί προηγουμένως. Δύο επιχειρήματα χρησιμοποιούνται στο readfile () λειτουργία.

download2.php


αν( χαμένος ($ _GET['μονοπάτι']))
{
// Διαβάστε το url
url $ = $ _GET['μονοπάτι']?

// Εκκαθάριση της προσωρινής μνήμης
clearstatcache ()?

// Ελέγξτε εάν η διαδρομή αρχείου υπάρχει ή όχι
αν( Το αρχείο υπάρχει (url $)) {

// Ορισμός πληροφοριών κεφαλίδας
επί κεφαλής ('Περιεχόμενο-Περιγραφή: Μεταφορά αρχείου')?
επί κεφαλής ('Τύπος περιεχομένου: εφαρμογή/οκτάδα-ροή')?
επί κεφαλής ('Περιεχόμενο-Διάθεση: συνημμένο? όνομα αρχείου = 'Το βασικό όνομα (url $)Το'' '')?
επί κεφαλής ('Περιεχόμενο-Μήκος:' Το μέγεθος αρχείου (url $))?
επί κεφαλής ('Pragma: public')?

// Εκκαθάριση του buffer εξόδου συστήματος
ξεπλύνετε ()?

// Διαβάστε το μέγεθος του αρχείου
readfile (url $,αληθής)?

// Τερματισμός από το σενάριο
ο ()?
}
αλλού{
πέταξε έξω 'Η διαδρομή αρχείου δεν υπάρχει.'?
}
}
πέταξε έξω 'Η διαδρομή αρχείου δεν έχει καθοριστεί.'

?>

Παραγωγή
Αφού κάνετε κλικ στη σύνδεση λήψης του αρχείου PDF, θα εμφανιστεί η ακόλουθη έξοδος.

Βίντεο-φροντιστήριο

συμπέρασμα

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