PDA

View Full Version : سوال: مشکل آپلود فایل



iner30
چهارشنبه 06 آبان 1388, 08:48 صبح
سلام دوستان
من تازه شروع کردم که زبان php رو یاد بگیرم، میخواستم رو یک هاستی به جای اینکه به کاربرام اف تی پی بدم یک صفحه درست کنم که از اونجا فایلاشونو آپلود کنم.این دوتا کد زیر رو هم از رو کتاب آموزشی نوشتم ولی کار نمیکنه،
میتونید بم کمک کنید و اونارو اصلاح کنید
و اگه براتون زحمت نیست و وقتتونو نمیگیره این کد رو جوری طراحی کنید که وقتی کاربر میخواد فایل خودشو آپلود کنه بتونه فایلو تو دسته بندی مناسب خودش قرار بده (عکس،فیلم،برنامه و...) و اینا پوشه هاش جدا باشه.
و یک زحمت دیگه هم که داشتم بعد از آپلود ادرس فایل رو هم در پایین پیغام فایل آپلود شد نمایش بده که کاربر مجبور نباشه یک ساعت خودش ادرس رو پیدا کنه
پیشاپیش از لطفتون ممنون

کد صفحه index.html


<html dir="rtl"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head><body>
<div align="center">
<form enctype="multipart/form-data" action="up.php" method="post">
<input type="hidden" name="max_file_size" value="100000" />
choose a file to upload: <input name="uploadefile" type="file" /><br/>
<input type="submit" value="upload file" />
</form>
</div>
</body></html>


کد صفحه up.php


<?php
$target_path="up/";
$target_path =$target_path .basename($_files['uploadefile']['name']);
if(move_uploaded_file($_files['uploadedfile']['tmp_name'],$target_path)){
echo "the file".basename($_files['uploadedfile']['name'])."has been uploaded";
} else{
echo "there was an error ";
}
?>

امیـرحسین
چهارشنبه 06 آبان 1388, 12:57 عصر
سلام
اول اینکه نام متغیرها توی PHP از نوع Case-Sensitive هست یعنی به کوچک و بزرگی حروف حساسه یعنی files_$ با FILES_$ کاملا فرق می کنه.
برای انتقال به فولدرهای مختلف، می تونید یه فیلد به فرم اضافه کنید که نوع (فولدر) رو مشخص کنه....

iner30
چهارشنبه 06 آبان 1388, 18:24 عصر
3 قسمت بود که تو کتاب هم با حروف بزرگ نوشته بود که منم اصلاحش کردم ولی بازهم درست نشد.



<?php
$target_path = "uploads/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
?>


فایل رو آپلود نمیکنه، و متنی که تو شرط دوم بش گفتیم اگه اپلود نشد اخطار بده رو نشون میده.
چیکار کنم؟

iner30
چهارشنبه 06 آبان 1388, 19:09 عصر
من کدهامو تغییر دادم و مشکل آپلودم حل شد
حالا اگه بخوام بعد از اپلود ادرس فایل رو هم تو صفحه بعدی نشون بده باید چیکار کنم،منظورم ادرسی هست که با زدن اون فایل دانلود میشه
برای دسته بندی فایلها هم list box شو درست کردم ولی نمیدونم چه جوری باید تو php پردازشش کنم(گفتم تازه شروع کردم به یاد گرفتن)اگه لطف کنید راهنماییم کنید ممنون میشم.

این کدهای جدید منه


<html dir="rtl"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head><body>
<div align="center">
<form action="http://mysite.ir/uploader.php" method="post" enctype="multipart/form-data">
<h2> فایل های خود را برای آپلود انتخاب کنید</h2><br>
<pre>
<input type="file" name="upfile[]" /><br>
<input type="file" name="upfile[]" /><br>
<input type="file" name="upfile[]" /><br><br>
<select name="masir">
<option value="1">عکس</option>
<option value="2">کلیپ و فیلم</option>
<option value="3">نرم افزار موبایل</option>
<option value="4">نرم افزار کامپیوتر </option>
<option value="5">فایل های متنی و pdf</option>
<option value="6">سایر</option>
</select>
<br>
<input type="submit" value="upload file" />
</pre>
</form>
</div>
</body></html>





<h2>This Files Has Been Received</h2>
<?php
echo "<pre>";
printf("\n\n\nFileName Type Size status\n");
for($i=0;$i<70;$i++)
printf("=");
printf("\n");
foreach ($_FILES["upfile"]["error"] as $key => $error)
{
if ($error == UPLOAD_ERR_OK)
{
$tmp_name = $_FILES["upfile"]["tmp_name"][$key];
$name ="uploads\\". $_FILES["upfile"]["name"][$key];
if (move_uploaded_file($_FILES["upfile"]["tmp_name"][$key], $name))
{
printf("%-20s ",$_FILES["upfile"]["name"][$key]);
printf("%-30s ",$_FILES["upfile"]["type"][$key]);
printf("%-10s ",$_FILES["upfile"]["size"][$key]);
printf("%-10s ",$_FILES["upfile"]["error"][$key]);
echo "\n";
for($i=0;$i<70;$i++)
printf("-");
printf("\n");
}
}
}
?>

iner30
چهارشنبه 06 آبان 1388, 21:49 عصر
واقعیتش نفهمیدم چی گفتی

ولی دوستان خودم به جواب اینکه چه جوری باید پردازشش کنم رسیدم

iner30
یک شنبه 10 آبان 1388, 09:58 صبح
دوستان حالا یک سوال دیگه که اصلا خودم هیچ اطلاعاتی ازش ندارم.
من چه جوری میتونم وقتی یک فایلی رو آپلود میکنم به جای اینکه ادرس مستقیم فایل رو بدم یک ادرس یک کد بدم که معرف اون فایل باشه.یعنی ادرس یک فایل شبیه این باشه. http://yoursite.com/dl/Photo.aspx?Type=S&ID=861

اخه میخوام اینجوری طرف مقابل با زدن آدرس پوشه فایلها به همه فایلا درسترسی نداشته باشه.
متوجه منظورم شدید یا باید بیشتر توضیح بدم.
من هیچی از sql نمیدونم ،خواهشا کامل توضیح بدید.
و یک سوال دیگه : فایل من وقتی آپلود شد من چه جوری میتونم یک متن رو به آخر اسم فایل اضافه کنم.(منظورم از آخر اسم فایل قبل از پسوند فایله)