וובמאסטר - תיכנות ובניית אתרים

מדריך PHP: העלאת קבצים

רן בר-זיק ,‏ אינטרנט ישראל‏ ‏/‏ 25 פברואר, 2011
F+
F-

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

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

<!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:

Array of supergloabl FILE

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

אנחנו לא רוצים רק לבחון את הקובץ אלא לשמור אותו בשרת שלנו. בואו ניצור תיקית upload בשרת שלנו:

Creating uploads directory

לתיקיה הזו אנו נעלה את הקובץ שלנו. ועכשיו בואו ונכניס את מנגנון ההעלאה ל-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. מכאן והלאה אפשר לטעון אותו ולקרוא את תוכנו כפי שלמדנו בפרק הקודם.

וזה הכל!

כמובן שאסור לנו בתכלית האיסור להעלות כזה קובץ לשרת שלנו, כל משתמש יכול באמצעות הקוד הזה להעלות כל קובץ לשרת! זה מסוכן מאד ויכול לגרום נזקים רציניים – מסתימת השרת ועד העלאת קבצים זדוניים ו-וירוסים.

רן בר-זיק, אינטרנט ישראל

מתכנת PHP מנוסה ובעל ידע רב בפיתוח לאינטרנט על בסיס LAMP. מומחה במערכות דרופל, ג'ומלה ו-וורדפרס. שולט היטב בכל מה שקשור לפרונט אנד: JavaScript: jQuery ו-MooTools,ActionScript 2/3 וכמובן HTML 5 + CSS 3.

אינטרנט ישראל: www.internet-israel.com
תגיות: PHP‏  /  מדריך‏  /  העלאת קבצים‏  

תגובות בפייסבוק

תגובות למאמר



עוד במדריך

תגיות פופולאריות

X
הצטרף לעמוד שלנו בפייסבוק להישאר מעודכן!
וובמאסטר © כל הזכויות שמורות