Κυριακή, 25 Σεπτεμβρίου, 2022
spot_img
ΑρχικήPHPPHP File Uploading

PHP File Uploading

PHP  File Uploading

PHP και λειτουργίες που αφορούν File Uploading

Ένα PHP script που μπορεί να χρησιμοποιηθεί με μια φόρμα HTML για να επιτρέπει στους χρήστες να ανεβάζουν αρχεία – files στον διακομιστή – server. Αρχικά, τα αρχεία ανεβαίνουν σε έναν προσωρινό κατάλογο και στη συνέχεια μεταφέρονται σε έναν προορισμό-στόχο μέσω ενός PHP script.

Οι πληροφορίες στη σελίδα phpinfo.php περιγράφουν τον προσωρινό κατάλογο που χρησιμοποιείται για τις μεταφορτώσεις αρχείων ως upload_tmp_dir και το μέγιστο επιτρεπόμενο μέγεθος των αρχείων – files που μπορούν να μεταφορτωθούν ως upload_max_filesize. Αυτές οι παράμετροι ορίζονται στο αρχείο διαμόρφωσης php.ini.

Η διαδικασία μεταφόρτωσης ενός αρχείου – File uploading ακολουθεί τα βήματα:

  • Ο χρήστης ανοίγει τη σελίδα που περιέχει μια φόρμα HTML που περιλαμβάνει κείμενο αρχείων, κουμπί περιήγησης και κουμπί υποβολής – Submit.
  • Ο χρήστης κάνει κλικ στο κουμπί περιήγησης και επιλέγει ένα αρχείο για αποστολή από τον τοπικό υπολογιστή.
  • Η πλήρης διαδρομή από το επιλεγμένο αρχείο εμφανίζεται στο κείμενο και στη συνέχεια ο χρήστης κάνει κλικ στο κουμπί υποβολής – Submit.
  • Το επιλεγμένο αρχείο αποστέλλεται στον προσωρινό κατάλογο του διακομιστή – server.
  • Το script που καθορίστηκε στην ιδιότητα action της φόρμας ελέγχει ότι το αρχείο έχει φτάσει και στη συνέχεια αντιγράφει το αρχείο σε έναν προβλεπόμενο κατάλογο.
  • Το script επιβεβαιώνει την επιτυχία στον χρήστη.

Ως συνήθως κατά τη σύνταξη αρχείων, είναι απαραίτητο τόσο για τις προσωρινές όσο και για τις τελικές τοποθεσίες να έχουν οριστεί δικαιώματα – permissions που επιτρέπουν τη σύνταξη αρχείων. Εάν κάποιο από τα δύο οριστεί να είναι μόνο για ανάγνωση, τότε η διαδικασία θα αποτύχει.

Ένα μεταφορτωμένο αρχείο – uploaded file θα μπορούσε να είναι ένα αρχείο κειμένου ή αρχείο εικόνας ή οποιοδήποτε άλλο έγγραφο.

PHP functions

Δημιουργία φόρμας μεταφόρτωσης – upload form

Ο παρακάτω κώδικας HTML δημιουργεί μια φόρμα μεταφόρτωσης. Αυτή η φόρμα έχει την ιδιότητα method που έχει οριστεί σε post και την ιδιότητα enctype που έχει οριστεί σε multipart/form-data.

<?php
   if(isset($_FILES[‘image’])){
      $errors= array();
      $file_name = $_FILES[‘image’][‘name’];
      $file_size =$_FILES[‘image’][‘size’];
      $file_tmp =$_FILES[‘image’][‘tmp_name’];
      $file_type=$_FILES[‘image’][‘type’];
      $file_ext=strtolower(end(explode(‘.’,$_FILES[‘image’][‘name’])));
      $extensions= array(“jpeg”,”jpg”,”png”);
      if(in_array($file_ext,$extensions)=== false){
         $errors[]=”extension not allowed, please choose a JPEG or PNG file.”;
      }
      if($file_size > 2097152){
         $errors[]=’File size must be excately 2 MB’;
      }
      if(empty($errors)==true){
         move_uploaded_file($file_tmp,”images/”.$file_name);
         echo “Success”;
      }else{
         print_r($errors);
      }
   }
?>
<html>
   <body>
      <form action=”” method=”POST” enctype=”multipart/form-data”>
         <input type=”file” name=”image” />
         <input type=”submit”/>
      </form>
   </body>
</html>

Θα εμφανίσει το ακόλουθο αποτέλεσμα:

PHP-File-Uploading

Δημιουργία σεναρίου μεταφόρτωσης – upload script

Υπάρχει μια καθολική μεταβλητή – global variable που ονομάζεται $_FILES. Αυτή η μεταβλητή είναι ένας πίνακας διπλών διαστάσεων που διατηρεί όλες τις πληροφορίες που σχετίζονται με το μεταφορτωμένο αρχείο – uploaded file. Έτσι, εάν η τιμή που εκχωρήθηκε στην ιδιότητα name της ετικέτας input  στη φόρμα μεταφόρτωσης ήταν file, τότε η PHP θα δημιουργούσε τις ακόλουθες πέντε μεταβλητές:

  • $_FILES[‘file‘][‘tmp_name‘]− το μεταφορτωμένο αρχείο στον προσωρινό κατάλογο του διακομιστή – server.
  • $_FILES[‘file‘][‘name‘]− το πραγματικό όνομα του μεταφορτωμένου αρχείου.
  • $_FILES[‘file‘][‘size‘]– το μέγεθος σε byte του μεταφορτωμένου αρχείου.
  • $_FILES[‘file‘][‘type‘]– ο τύπος MIME του μεταφορτωμένου αρχείου.
  • $_FILES[‘file‘][‘error‘]− ο κωδικός σφάλματος που σχετίζεται με τη μεταφόρτωση αυτού του αρχείου.

Παράδειγμα
Το παρακάτω παράδειγμα θα πρέπει να επιτρέπει τη μεταφόρτωση εικόνων και να δίνει αποτελέσματα ως πληροφορίες μεταφορτωμένο αρχείο – uploaded file.
Σημείωση: στο παράδειγμα που ακολουθεί η τιμή που εκχωρήθηκε στην ιδιότητα name της ετικέτας input στη φόρμα μεταφόρτωσης είναι image.

<?php
   if(isset($_FILES[‘image’])){
      $errors= array();
      $file_name = $_FILES[‘image’][‘name’];
      $file_size = $_FILES[‘image’][‘size’];
      $file_tmp = $_FILES[‘image’][‘tmp_name’];
      $file_type = $_FILES[‘image’][‘type’];
      $file_ext=strtolower(end(explode(‘.’,$_FILES[‘image’][‘name’])));
      $extensions= array(“jpeg”,”jpg”,”png”);
      if(in_array($file_ext,$extensions)=== false){
         $errors[]=”extension not allowed, please choose a JPEG or PNG file.”;
      }
      if($file_size > 2097152) {
         $errors[]=’File size must be excately 2 MB’;
      }
      if(empty($errors)==true) {
         move_uploaded_file($file_tmp,”images/”.$file_name);
         echo “Success”;
      }else{
         print_r($errors);
      }
   }
?>
<html>
   <body>
      <form action = “” method = “POST” enctype = “multipart/form-data”>
         <input type = “file” name = “image” />
         <input type = “submit”/>
         <ul>
            <li>Sent file: <?php echo $_FILES[‘image’][‘name’];  ?>
            <li>File size: <?php echo $_FILES[‘image’][‘size’];  ?>
            <li>File type: <?php echo $_FILES[‘image’][‘type’] ?>
         </ul>
      </form>
   </body>
</html>

Θα εμφανίσει το ακόλουθο αποτέλεσμα:

PHP-FileUploading

Μπορείτε να ενημερωθείτε για την php στο σχετικό θεματικό τμήμα του blog μας που μπορείτε να δείτε εδώ.

Αν θέλετε να μάθετε περισσότερα για την κατασκευή ιστοσελίδας παρακολουθήστε το σεμινάριο Web Design και άλλα σεμινάρια εξ αποστάσεως από το Εργαστήριο ΤΠΕ Ήρων

Πηγή: tutorialspoint.com

 

Rate this post
Προηγούμενο άρθροCSS – Pseudo Classes
Επόμενο άρθροPHP Cookies

ΑΦΗΣΤΕ ΜΙΑ ΑΠΑΝΤΗΣΗ

εισάγετε το σχόλιό σας!
παρακαλώ εισάγετε το όνομά σας εδώ

Must Read

spot_img