העלאת קבצים בשפת PHP

העלאת קובץ לשרת, מתבצעת על ידי טופס אשר מה שמיוחד בו זה:

enctype="multipart/form-data"

המאפיין הזה בטופס נותן לנו את האפשרות לשלוח קובץ.
אנו נשתמש ב input מסוג file ולבסוף בעזרת המשתנה הגלובאלי $_FILES[].

בעזרת הפונקציה move_uploaded_file(), מתבצע כל תהליך העלאת הקובץ לשרת.
תפקידה של הפונקציה move_uploaded_file:
לפונקציה ישנם שתי ארגומנטים, הארגומנט הראשון הוא המשתנה הזמני שבתוכו נמצא הקובץ, והארגומנט השני הוא שם הקובץ החדש שאנו רוצים לקרוא לו בשרת שלנו.

דוגמא של העלאת קובץ

<?php 
if (isset($_POST["check_if_press"]) && $_POST["check_if_press"] == "send_file")  

{ 

    if (!empty($_FILES["my_file"]["name"]))  
    { 
        $dir = getcwd()."/"; 
        move_uploaded_file($_FILES["my_file"]["tmp_name"] , $dir.$_FILES["my_file"]["name"]);  
        echo "Weldone, You have been uploaded the file."; 
    } 

} 
?>
<form action="<?php echo $PHP_SELF; ?>" method="post" enctype="multipart/form-data">  
    Upload file: <input type="file" name="my_file" /><br /> 
  <input type="submit" name="check_if_press" value="send_file"  /> 
</form>

הכל ידוע לנו חוץ משהגדרנו,

enctype="multipart/form-data"

 זה אומר שאפשר להעביר קבצים (בעברית פשוטה), ללא זה הטופס לא יוכל להעביר שום קובץ.

הגדרנו סוג input חדש מסוג file, ושם המפתח של המשתנה הגלובאלי $_FILES[], הוא my_file.

נעבור לחלק העליון, כאשר לחצנו על כפתור השליחה, ועברנו את ה if הראשון, ב if השני אנו נתקלים בפונקציה חדשה ששמה empty.
פונקציה זו,פשוטה מאוד, היא בודקת אם המשתנה ריק או מלא. במקרה שלנו אנו בדקנו אם הוא ריק, בגלל ששמנו את האופרטור הזה ! שזה אומר שתהפוך את הערך הבוליאני של מה שתקבל. לכן מה שעושה שורת ה if הזו, היא בעצם בודקת האם המשתנה הגלובאלי של שם הקובץ, אכן מולא.

במשתנה $dir, אנו רואים עוד פונקציה חדשה, getcwd(), תפקידה הוא לתת את המיקום הראשי, של הקובץ הנוכחי שאתם מריצים אותו, ולכן במצב הזה, הקובץ שתעלו אותו לשרת שלכם, יהיה בספרייה של הקובץ שתריצו את התוכנית הזו.
על הפונקציה move_uploaded_file, הרחבנו כבר בהתחלה, אבל חשוב לציין שבאורגמנט השני, אנו קובעים את המיקום שהקובץ יעלה אליו בשרת, ואת שמו החדש. במקרה שלנו השארנו את אותו השם שהיה לקובץ לפני שעלה לשרת.
חשוב לציין שאת מיקום הקובץ החדש שהעלנו אפשר לשנות באמצעות שינוי המשתנה של $dir, פשוט להוסיף ספרייה אחרי ה “/”.

דוגמת להעלאת מספר רב של קבצים

<?php  
$number_of_files_to_upload = 3; 
if (isset($_POST["check_if_press"]) && $_POST["check_if_press"] == "send_file")   

{  
 for ($i=1; $i<=$number_of_files_to_upload; $i++) { 
  if (!empty($_FILES["my_file".$i]["name"]))   
  {  
   $dir = getcwd()."/";  
   move_uploaded_file($_FILES["my_file".$i]["tmp_name"] , $dir.$_FILES["my_file".$i]["name"]);   
  }  
 } 
 echo "Weldone, You have been uploaded the files.";  
}  
?>
<form action="<?php echo $PHP_SELF; ?>" method="post" enctype="multipart/form-data">   
<?php  
for ($i=1; $i<=$number_of_files_to_upload; $i++) { 
 ?> 
 Upload file: <input type="file" name="my_file<?php echo $i;?>" /><br />  
 <?php  
}  
?> 
  <input type="submit" name="check_if_press" value="send_file"  />  
</form>

דוגמא יחסית פשוטה וחדשה שמאפשרת לנו להעלת מספר גדול של קבצים בלחיצה אחת.
פשוט אנו צריכים לשנות את המספר של המשתנה

$number_of_files_to_upload

למספר הקבצים שאנו רוצים מקסימום להעלות לשרת.

דוגמת מחיקת קובץ

<?php 
function delete_file($loc , $file ) { 
    if (file_exists($loc.$file )) { 
        unlink($loc.$file); 
        return true; 
    } 
} 

if (delete_file("" , "name_of_file" )) { 
    echo "You have been deleted the file"; 
} 
// name_of_file can be file.txt or index.php... 

/* אם קובץ המחיקה נמצא איפה שהקובץ  
שאנו רוצים למוחק נמצא, אז נכתוב כך */ 
?>

כפי שאתם רואים, בנינו פה פונקציה פשוטה ביותר שדורשת שתי ארגומנטים, אחד מיקום הקובץ שאנו רוצים למחוק, והשני שם הקובץ המלא.
לאחר מכן אנו קוראים לשם הפונקציה, ומכניסים “” בארגומנט הראשון.
“”, זה אומר שהקובץ שנמחק נמצא באותו מיקום, איפה שנמצא הקובץ שאנו מריצים כעת, על מנת למחוק את הקובץ.
אנו כותבים את שם הקובץ שאנו רוצים למחוק מהשרת שלנו בארגומנט השני.

הפונקציה file_exists בודקת האם הקובץ אכן נמצא בשרת, ו- unlink זוהי הפונקציה שמוחקת את הקובץ, כאשר מכניסים לה את מיקום ושמו של הקובץ בשרת.