سلام کاربران عزیز ، حالتون خوبه ؟ با اموزش امروز ما که در مورد  آپلود کردن فایل ها به  server – PHP همراه باشید.
می توان به کمک یک اسکریپت PHP و فرم  HTML به کاربر امکان داد، فایل های مورد نیاز را در server بارگذاری کند. در ابتدای امر فایل ها در پوشه (directory) موقتی ذخیره گردیده، سپس توسط اسکریپت PHP به مقصد نهایی انتقال داده می شوند.

اطلاعات فایل phpinfo.php توضیح می دهد که دایرکتوری موقتی که برای آپلود فایل بکار می رود کدام است مانند upload_tmp_dir، همچنین حداکثر حجم فایلی که می تواند با استفاده از php بار گذاری شود در فایل تنظیمات  php.ini مشخص می شود. پارامترهای یاد شده در فایل پیکربندی php.in قرار می گیرند.

فرایند بارگذاری فایل در سرور به شرح زیر می باشد.

کاربر صفحه ی HTML  مورد نظر که شامل یک فایل متنی (text file)، دکمه ی browse و submit می باشد، را باز می کند.

کاربر روی دکمه ی browse کلیک کرده و فایل انتخابی برای ارسال از رایانه ی محلی را انتخاب می کند.

مسیر کامل فایل انتخابی در text field نمایان شده و پس از آن کاربر روی دکمه ی submit کلیک می کند.

فایل انتخابی در پوشه ی موقتی بر روی server ارسال شده و سپس بارگذاری می شود.

اسکریپت PHP به عنوان form handler (اجرا کننده ی فرم) در خصیصه action فرم تعریف شده بررسی می کند که آیا فایل های ارسالی دریافت شده اند یا خیر، سپس آن ها را در پوشه ی موردنظر جای گذاری می کند.

اسکریپت PHP موفقیت عملیات را به کاربر اعلام می کند.

به طور معمول لازم است به هنگام نوشتن فایل، سطح دسترسی به هر دو مکان قرار گیری موقت و نهایی فایل ها، روی file writing، تنظیم شده باشد.

اگر حتی تنها یکی از آن ها مجوز یا سطح دسترسی read-only داشته باشند، کل فرایند با شکست مواجه می شود.

فایل آپلود شده می تواند یک فایل متنی، تصویری و یا هر فایل دیگری باشد.

ایجاد یک upload form (فرم بارگذاری)

کد HTML زیر، یک فرم بارگذاری (upload) ایجاد می کند. Method attribute این فرم روی مقدار Post تنظیم شده است. همان طور که در مثال زیر مشاهده می کنید، مقدار multipart/form-data به خصیصه ی enctype تخصیص داده شده است.

<html>

‎‎

<head>

<title>File Uploading Form</title>‎

</head>‎

<body>

‎<h3>File Upload:</h3>‎

Select a file to upload: <br />‎

‎<form action=”/php/file_uploader.php” method=”post” ‎

‎ enctype=”multipart/form-data”>

‎<input type=”file” name=”file” size=”50″ />‎

‎<br />‎

‎<input type=”submit” value=”Upload File” />‎

</form>‎

</body>‎

&lt;/html>‎

این نتیجه بدست می آید.

File Upload:‎
Select a file to upload: ‎

NOTE: This is just dummy form and would not work.‎

ایجاد اسکریپت بارگذاری / ارسالی (upload script)

در زبان برنامه نویسی تحت وب PHP یک متغیر سراسری / عمومی (global) به نام $_FILES وجود دارد. متغیر ذکر شده یک آرایه ی شرکت پذیر دو بعدی (two-dimensional associative array) است که کلیه ی اطلاعات مربوط به فایل را در خود ذخیره می کند. چنانچه مقدار تخصیص داده شده به خصیصه یinput name (attribute) در فرم ارسالی file باشد، در آن صورت PHP پنج متغیر سراسری (global) زیر را ایجاد می کند.

$_FILES[‘file’][‘tmp_name’] – اسم واقعی فایل ارسالی (آپلود شده).

$_FILES[‘file’][‘name’] – حجم فایل ارسالی بر حسب واحد بایت.

–  $_FILES[‘file’][‘size’]سایز فایل آپلود شده بر حسب واحد بایت.

$_FILES[‘file’][‘type’] – MIME type فایل ارسالی / نام کپی موقت از فایل که روی سرور ذخیره شده.

$_FILES[‘file’][‘error’] – error code (کد خطا) که از فایل ارسالی حاصل شده است.

مثال زیر سعی در کپی یک فایل که توسط فرم HTML ای که منبع (source) آن در بخش قبلی داخل پوشه ی /var/www/html که ریشه ای (root) از PHP Server می باشد، دارد. پس از تکمیل فرایند جزئیات پایان کار را نمایش می دهد.

به وسیله ی کد uploader.php script در عبارت زیر بارگذاری یک فایل در سرور انجام می گیرد.

‎<?php‎

if( $_FILES[‘file’][‘name’] != “” )‎

‎{‎

‎   copy( $_FILES[‘file’][‘name’]، “/var/www/html” ) or ‎

‎           die( “Could not copy file!”);‎

‎}‎

else

‎{‎

‎    die(“No file specified!”);‎

‎}‎

‎?>‎

‎<html>‎

‎<head>‎

‎<title>Uploading Complete</title>‎

‎</head>‎

‎<body>‎

‎<h2>Uploaded File Info:</h2>‎

‎<ul>‎

‎<li>Sent file: <?php echo $_FILES[‘file’][‘name’];  ?>‎

‎<li>File size: <?php echo $_FILES[‘file’][‘size’];  ?> bytes‎

‎<li>File type: <?php echo $_FILES[‘file’][‘type’];  ?>‎

‎</ul>‎

‎</body>‎

‎</html>‎

نتیجه ی زیر حاصل می گردد.

Uploaded File Info:

Sent file: uploadedfile.txt

File size: 2003 bytes

File type: image/jpg

‎ ‎