העלאת קבצים PHP
-
@אביי אמרת שעשית ניסיון לשלב והוא לא צלח, אבל לא הבאת כזה ניסיון.
הנה שילוב בקוד:<?php $dir = $_SERVER['DOCUMENT_ROOT'] . "\\uploads\\"; $url = '/uploads/'; for ($i = 0; $i < count($_FILES['upload']['name']); $i++) { $fileName = $_FILES['upload']['name'][$i]; $tmpFilePath = $_FILES['upload']['tmp_name'][$i]; $err = $_FILES['upload']['error'][$i]; echo "<div> קובץ: $fileName"; if ($err != 0) { echo "שגיאה בשליחת הקובץ לשרת, קוד שגיאה: $err"; } else { if (move_uploaded_file($tmpFilePath, $dir . $fileName)) { echo " היי, הקובץ הועלה בהצלחה!! <br /> :קח מכאן את הקישור הישיר לקובץ <a href='{$url}{$fileName}'>$fileName<a/> "; } else { echo 'שגיאה בהעברת הקובץ מתיקיית הקבצים הזמניים בשרת למיקום הסופי.'; } } echo "</div>"; }
-
@dovid זה הסתדר! הקוד שלך עובד טוב הבעיה הייתה בי!
לא הגדרתי נכון את המיקום של התיקייה להעלאה, עכשיו שמתי לב לזה וזה עובד מצוין, תודה רבה!אני מעלה את הקוד השלם, לכאן:
html לבחירת הקבצים, (ניתן לבחור כמה, אין מגבלת כמות)<form action="upload1.php" method="post" enctype="multipart/form-data"> <input type="file" name="upload[]" multiple="multiple"> <input type="submit" value="העלה קבצים" > </form>
כאשר "upload1.php" מגדיר את שם הקובץ שמכיל את מערך ההעלאה עצמו.
<?php $dir = $_SERVER['DOCUMENT_ROOT'] . "https://tchumim.com/"; $url = 'https://tchumim.com/'; for ($i = 0; $i < count($_FILES['upload']['name']); $i++) { $fileName = $_FILES['upload']['name'][$i]; $tmpFilePath = $_FILES['upload']['tmp_name'][$i]; $err = $_FILES['upload']['error'][$i]; echo "<div> קובץ: $fileName"; if ($err != 0) { echo "שגיאה בשליחת הקובץ לשרת, קוד שגיאה: $err"; } else { if (move_uploaded_file($tmpFilePath, $dir . $fileName)) { echo " היי, הקובץ הועלה בהצלחה!! <br /> :קח מכאן את הקישור הישיר לקובץ <a href='{$url}{$fileName}'>$fileName<a/> "; } else { echo 'שגיאה בהעברת הקובץ מתיקיית הקבצים הזמניים בשרת למיקום הסופי.'; } } echo "</div>"; }
כאשר במקום "https://tchumim.com/" יש לשים את הקישור לתיקיית האיחסון של הקובץ. (בשורה העליונה כנתיב מספריית המחשב, ובתחתונה עם הדומיין של האתר.
-
@chagold אמר בהעלאת קבצים PHP:
או לעשות פונקציה שתיצור את התיקיה בשרת ושתעלה קובץ קובץ.
זה המועדפת...
אבל כרגע ראיתי שיש הגבלה על כמות הקבצים של 20 בכל נגלה...
הגדרתי ב php.ini בשורה
max_file_uploads=200
אבל זה לא פתר את הבעיה... עריכה: זה פתר את הבעיה, אבל לקח לזה קצת זמן להתעדכן... -
-
@אביי זה עושה זיפ למקרה של קבצים מרובים:
<?php $dir = $_SERVER['DOCUMENT_ROOT'] . "\\uploads\\"; $url = '/uploads/'; if (count($_FILES['upload']['name']) == 1) { $fileName = $_FILES['upload']['name'][0]; $tmpFilePath = $_FILES['upload']['tmp_name'][0]; $err = $_FILES['upload']['error'][0]; echo "<div> קובץ: $fileName"; if ($err != 0) { echo "שגיאה בשליחת הקובץ לשרת, קוד שגיאה: $err"; } else { if (move_uploaded_file($tmpFilePath, $dir . $fileName)) { echo " היי, הקובץ הועלה בהצלחה!! <br /> :קח מכאן את הקישור הישיר לקובץ <a href='{$url}{$fileName}'>$fileName<a/> "; } else { echo 'שגיאה בהעברת הקובץ מתיקיית הקבצים הזמניים בשרת למיקום הסופי.'; } } echo "</div>"; } else { $zipname = $_FILES['upload']['name'][0].'.zip'; $zip = new ZipArchive; $zip->open($dir . $zipname, ZipArchive::CREATE); for ($i = 0; $i < count($_FILES['upload']['name']); $i++) { $fileName = $_FILES['upload']['name'][$i]; $tmpFilePath = $_FILES['upload']['tmp_name'][$i]; $err = $_FILES['upload']['error'][$i]; if ($err != 0) { echo "שגיאה בשליחת הקובץ לשרת, קוד שגיאה: $err"; } else { if (!$zip->addFile($tmpFilePath, $fileName)) { echo 'שגיאה בהעברת הקובץ מתיקיית הקבצים הזמניים בשרת למיקום הסופי.'; } } } $zip->close(); echo "<a href='{$url}{$zipname}'>$zipname<a/>"; }