ανέβασμα αρχείων στο internet Σε αυτό το παράδειγμα θα δείξουμε τον τρόπο με τον οποίο γίνεται ανέβασμα αρχείων στο internet (file upload) μέσω της γλώσσας PHP.
php file upload
Με τη γλώσσα PHP, υπάρχει η δυνατότητα να ανεβάσουμε (upload) αρχεία στο server.
ανέβασμα αρχείων στο internet Δημιουργία HTML φόρμας για το ανέβασμα αρχείων: Για να επιτρέψουμε στους χρήστες να κάνουν ανέβασμα αρχείων στο internet πρέπει να φτιάξουμε τη σχετική HTML φόρμα, όπως στο παράδειγμα που ακολουθεί.
1 2 3 4 5 6 7 8 9 10 11 12
<html> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file"><br> <input type="submit" name="submit" value="Submit"> </form> </body> </html>
Στην παραπάνω HTML φόρμα πρέπει να παρατηρήσουμε τα εξής: Το χαρακτηριστικό enctype (enctype attribute) του στοιχείου καθορίζει ποιός τύπος περιεχομένου θα χρησιμοποιηθεί κατά την αποστολή των δεδομένων Ο τύπος «multipart/form-data» χρησιμοποιείται όταν η φόρμα απαιτεί binary data, όπως για παράδειγμα το περιεχόμενο του αρχείου που θα κάνουμε upload
Το χαραχτηριστικό type=»file» του στοιχείου input προσδιορίζει οτι η είσοδος (input) θα χρησιμοποιηθεί ως αρχείο. Για παράδειγμα, όταν το βλέπουμε στο browser, θα υπάρχει ένα browse-button δίπλα στο σχετικό πεδίο Προσοχή: Εάν επιτρέψουμε στους χρήστες να κάνουν ανέβασμα αρχείων στο internet τότε δημιουργούμε πιθανούς κινδύνους στην ασφάλεια. Επομένως πρέπει να επιτρέπουμε μόνο σε εξουσιοδοτημένους χρήστες να κάνουν ανέβασμα αρχείων στο internet Το αρχείο «upload_file.php» περιέχει τον κώδικα PHP για το ανέβασμα αρχείων στο internet:
1 2 3 4 5 6 7 8 9 10 11 12 13
<?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br>"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br>"; echo "Type: " . $_FILES["file"]["type"] . "<br>"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } ?>
Με τη χρήση του global PHP $_FILES array μπορούμε να ανεβάσουμε αρχεία από ένα τοπικό υπολογιστή προς ένα server. Η πρώτη παράμετρος είναι το όνομα της φόρμας (form’s input name) και η δεύτερη μπορεί να είναι «name», «type», «size», «tmp_name» or «error». Όπως εδώ: $_FILES["file"]["name"] – το όνομα του αρχείου που ανεβάζουμε $_FILES["file"]["type"] – ο τύπος του αρχείου που ανεβάζουμε $_FILES["file"]["size"] – το μέγεθος σε kilobytes του αρχείου που ανεβάζουμε $_FILES["file"]["tmp_name"] – το όνομα του προσωρινού αντιγράφου του αρχείου μόλις ανέβει στο server $_FILES["file"]["error"] – το μήνυμα λάθους (error code) που θα προκύψει από το ανέβασμα του αρχείου
Αυτός είναι ένας πολύ απλός τρόπος για να κάνουμε ανέβασμα αρχείων στο internet. Για λόγους ασφάλειας, πρέπει να προσθέσουμε περιορισμούς σχετικά με το τι μπορεί να ανεβάσει ο χρήστης Στο επόμενο πρόγραμμα έχουμε προσθέσει μερικούς περιορισμούς στο ανέβασμα αρχείων στο internet. Ο χρήστης μπορεί να ανεβάσει αρχεία τύπου .gif, .jpeg, και .png. Το μέγεθος του αρχείου πρέπει να είναι μικρότερο από 20 Kbytes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
<?php $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br>"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br>"; echo "Type: " . $_FILES["file"]["type"] . "<br>"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } } else { echo "Invalid file"; } ?>
Στα προηγούμενα παραδείγματα δημιουργήσαμε ένα προσωρινό αντίγραφο του ανεβασμένου αρχείου στο server, στο φάκελο temp (PHP temp folder) Τα αρχεία που αντιγράφηκαν προσωρινά διαγράφονται όταν ολοκληρωθεί η εκτέλεση του php.
Για να αποθηκεύσουμε τα ανεβασμένα αρχεία μόνιμα, πρέπει να καθορίσουμε μια διαφορετική διεύθυνση:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
<?php $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br>"; echo "Type: " . $_FILES["file"]["type"] . "<br>"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Invalid file"; } ?>
Σε αυτό το παράδειγμα είδαμε αναλυτικά πως γίνεται το ανέβασμα αρχείων στο internet .
PHP File Upload php μαθηματα ανέβασμα αρχείων στο internet μαθημα php
Πηγή: