מדריך PHP: העלאת קבצים
במאמר הזה אנו נלמד על כיצד להעלות קבצים לשרת שלנו ואז לטפל בהם.
מה שאנו צריכים לעשות הוא ליצור טופס בסיסי להעלאת קבצים. אותו נשמור בתיקיה שלנו תחת שם כלשהו:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>upload a file</title> </head> <body> <form enctype="multipart/form-data" action="uploader.php" method="POST"> Choose a file to upload: <input name="uploadedfile" type="file" /> <input type="submit" value="Upload File" /> </form> </body> </html>
כפי שניתן לראות מדובר בטופס פשוט שבפשוטים, מה שמעניין ב-form הוא ה-method שלו (רק POST בקבצים), ה-action שלו (מוביל ל-uploader.php שיטפל בקובץ) וה-entype שלו.
ה-input הוא מסוג file עם השם uploadedfile – השם חשוב מאד! כפתור ה-submit הוא פשוט.
עכשיו ניגש לצד השרת ונראה איך אנו מקבלים את הקובץ.
כל קובץ שמגיע לדף PHP נכנס באופן אוטומטי למשתנה סופר גלובלי בשם FILES_$.
בואו ניצור את uploader.php ונשתמש בטופס להעלות קובץ מסוים! את הטופס יצרנו תחת השם form.html, ניצור קובץ php בשם uploader.php ונכניס לתוכו את הטקסט הבא:
<?php print_r($_FILES);
אנו נראה הדפסה של כל המערך שכולל את כל הקבצים שנשלחו תחת שמות ה-input:
כאן אנו רואים שתחת uploadedfile יש מערך שבו יש את שם הקובץ, סוג הקובץ, הגודל שלו ואפילו המקום שבו הוא נמצא כרגע (בתיקיה זמנית כלשהי).
אנחנו לא רוצים רק לבחון את הקובץ אלא לשמור אותו בשרת שלנו. בואו ניצור תיקית upload בשרת שלנו:
לתיקיה הזו אנו נעלה את הקובץ שלנו. ועכשיו בואו ונכניס את מנגנון ההעלאה ל-uploader.php:
<?php $target_path = 'uploads/'.$_FILES['uploadedfile']['name']; $result = move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path); if($result) { print "The file has been uploaded"; } else { echo "There was an error uploading the file, please try again!"; }
ראשית אנו מגדירים את השם של הקובץ, במקרה הזה התיקיה + שם הקובץ כפי שמופיע במחשב של הגולש.
שנית, אנו משתמשים בפונקצית move_uploaded_file שמעבירה את הקובץ מהתיקיה הזמנית שלו אל התיקיה הקבועה שלנו. במידה וההעברה מצליחה, משתנה result מקבל ערך TRUE.
עכשיו כל מה שנותר לנו זה להריץ תנאי על משתנה ה-result כדי להציג פלט הצלחה או כשלון. אם הצלחנו, נוכל לראות שהקובץ שלנו התווסף אל תיקית ה-upload. מכאן והלאה אפשר לטעון אותו ולקרוא את תוכנו כפי שלמדנו בפרק הקודם.
וזה הכל!
כמובן שאסור לנו בתכלית האיסור להעלות כזה קובץ לשרת שלנו, כל משתמש יכול באמצעות הקוד הזה להעלות כל קובץ לשרת! זה מסוכן מאד ויכול לגרום נזקים רציניים – מסתימת השרת ועד העלאת קבצים זדוניים ו-וירוסים.
תגובות בפייסבוק