PDA

View Full Version : آپلود فایل



jalaladdin
جمعه 04 شهریور 1390, 12:04 عصر
برای قسمت آپلود وب سایتم این کد را قرار دادم اما وقتی فایلی را انتخاب میکنم و روی آپلود کلیک میکنم صفحه اصلی وب سایت باز میشود اما اگر این کد را در صفحه دیگری امتحان کنم فایل آپلود میشود به نظر شما مشکل از کجاست؟

<?php
$target = "upload/";
$target = $target . basename( $_FILES['uploaded']['name']) ;
$ok=1;
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
{
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
}
else {
echo "Sorry, there was a problem uploading your file.";
}
?>
<form action="<?php $_SERVER['PHP_SELF']?>" method="POST">
<br/>انتخاب فایل: <input name="uploaded" type="file" /><br />
<input type="submit" value="Upload" />
</form>

ماهان مقدم
جمعه 04 شهریور 1390, 18:46 عصر
خوب الآن شما فرم رو داری میفرستی به همین صفحه می خوای چطور نمایش بده ؟

jalaladdin
چهارشنبه 09 شهریور 1390, 13:19 عصر
برای قسمت آپلود سایت از این کد استفاده میکنم اما کد کار نمیکنه !!!!!!!!!

<?php
$uploadDir = 'upload/';
mysql_error();
if(isset($_POST['upload']))
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];

$filePath = $uploadDir . $fileName;

$result = move_uploaded_file($tmpName, $filePath);
if (!$result) {
echo "Error uploading file";
exit;
}

$link=mysql_connect("127.0.0.1","root","");
if(!$link)
print "not connect";

$fileName = addslashes($fileName);
$filePath = addslashes($filePath);
$mysql=mysql_query("INSERT INTO file(name, size, type, path ".
"VALUES ('".$fileName."', '".$fileSize."', '".$fileType."', '".$filePath."')");

if($mysql)
print "ok uploaded ";
}


?>
<form action="<?php $_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data">
<br />select file : <input name="file" type="file" /><br />
<input name="upload" type="submit" value="upload" />
</form>

jalaladdin
چهارشنبه 09 شهریور 1390, 16:38 عصر
لطفا راهنمای کنید

jalaladdin
چهارشنبه 09 شهریور 1390, 17:09 عصر
وقتی روی آپلود کلیک میکنم مرورگر این پیغام را به من نشان میده

echo "Error uploading file";

ras-amir
پنج شنبه 10 شهریور 1390, 09:31 صبح
پرانتز های فانکشن(تابع) اکو رو نگذاشتید، اینطوری:
ECHO("SALAM");
:بامزه:

MMSHFE
پنج شنبه 10 شهریور 1390, 11:33 صبح
دوست عزیز، echo تابع نیست. نیازی به پرانتز هم نداره. توی قسمت action هیچی ننویسید ببینید مشکل رفع میشه یا نه؟ مثال:


<form action="" method="post" enctype="multipart/form-data">
...
</form>

ras-amir
پنج شنبه 10 شهریور 1390, 15:39 عصر
بله!!! بله!!!:متعجب::قهقهه:
فکر کنم شما باید یک بار دیگه پی اچ پی رو یاد بگیرید!!!
تابع اکو یا پرینت از توابع اولیه پی اچ پی هستند.
باز هم : هه هه هه هه ههههههههه@@@@@@@@@@@@@@@@@!

MMSHFE
پنج شنبه 10 شهریور 1390, 17:59 عصر
دوست عزیز، به جای مسخره کردن، بهتره راهنمای PHP رو بخونید:
http://php.net/manual/en/function.echo.php
به سطر دوم در قسمت Description (بعد از ساختار کد) دقت کنید:
echo() is not actually a function (it is a language construct), so you are not required to use parentheses with it.
ترجمه (برای اون دسته از دوستانی که زبانشون در حدی نیست که بتونن ترجمه کنن) :
()echo در حقیقت یک تابع نیست (یک ساختار زبان است)، درنتیجه، نیاز ندارید که از پرانتزها همراه با آن استفاده کنید.
این موضوع قبلاً هم توی این انجمن بحث شده و گفتن مجدد اون، دوباره کاری هست. بهتره اینقدر سطحی به مسائل نگاه نکنید. با توجه به حضور تازه شما در این انجمن، بهتره کمی منطقی تر عمل کنید تا چهره مجازی خوبی کسب کنید. موفق باشید.

ras-amir
جمعه 11 شهریور 1390, 08:39 صبح
خوب شد نوشتی!
اولا دقیقا منظور ایشون این نیست که تابع نیست ، منظور این است که تابع بسیار مهم هست و کاربرد بسیار زیادی داره.
من هم چون این مشکل بار ها برام به وجود اومده و ارور سینتسک دیدم اینو گفتم.
البته شاید شما به این مشکل نخورده باشید چون من توی هر ide که می نویسم مشکلات خاص خودشو داره و در نوت پد هزار گیر الکی میده.

jalaladdin
جمعه 11 شهریور 1390, 08:50 صبح
چه تغییراتی در کد آپلود اعمال کنم تا فقط اجازه چهار نوع فایل(doc,pdf,zip,powerpoint) برای اپلود را بدهد

ras-amir
جمعه 11 شهریور 1390, 13:11 عصر
معمولا آدرس فایل آپلود شده حاوی پسوند فایل هم هست.
خوب سه حرف آخر آدرس پسوند هست می تونید شرط بگذارید که اگر سه حرف آخر فلان و فلان بود آپلود کن و الا ...
موفق باشید.

ras-amir
جمعه 11 شهریور 1390, 14:51 عصر
تشکری ، چیزی ....

jalaladdin
جمعه 11 شهریور 1390, 14:55 عصر
لطفا بیشتر توضیح دهید این شرط را چگون و کجا قرار بدم با تشکر

ras-amir
جمعه 11 شهریور 1390, 15:45 عصر
اول آدرس رو بگیر و بعد شرط را قرار بده . در داخل شرط دستور آپلود نمایش صفحه بعد از عملیات بده.
از خصوصیات یک برنامه نویس قدرت حل و درک کد است و مسائل را خود حل می کند.

ras-amir
جمعه 11 شهریور 1390, 15:46 عصر
برای تشکر هم دکمه را فشار بده!

MMSHFE
شنبه 12 شهریور 1390, 07:28 صبح
خوب شد نوشتی!
اولا دقیقا منظور ایشون این نیست که تابع نیست ، منظور این است که تابع بسیار مهم هست و کاربرد بسیار زیادی داره.
من هم چون این مشکل بار ها برام به وجود اومده و ارور سینتسک دیدم اینو گفتم.
البته شاید شما به این مشکل نخورده باشید چون من توی هر ide که می نویسم مشکلات خاص خودشو داره و در نوت پد هزار گیر الکی میده.
جمله اولتون خيلي جالبه! دوست عزيز، وقتي پرانتز نميخواد، يعني تابع نيست! فكر كنم تعريفتون از تابع يكم مشكل داره. جمله خودتون رو براي خودتون تكرار ميكنم:
فكر كنم شما بايد يك بار ديگه پي اچ پي رو ياد بگيريد!!!
اولاً اگه منظورتون از نوت پد، ++NotePad هست كه اين اديتور مشكلي نداره اما اگه NotePad ويندوز رو ميگين كه اصلاً در سطح بحث كردن نيست. ضمناً به اين نرم افزارها هم اديتور ميگن نه IDE چون IDE امكانات زيادي ازقبيل Debugger و... داره اما اين برنامه ها صرفاً ويرايشگرهاي پيشرفته متن هستند.
در جواب دوستمون هم كه پرسيدن چطور فقط انواع خاصي از فايل رو اجازه آپلود بدن، بايد بگم كه هم ازطريق پسوند و هم ازطريق انديس type فايل آپلود شده، ميتونن اين كار رو انجام بدن. براي مثال، اگه توي فرم، تگ input مربوط به فايل، به نام upload باشه ("input type="file" name="upload)، متغير زير، نوع فايل آپلود شده رو اعلام ميكنه:


$_FILES['upload']['type']

موفق باشيد.

ras-amir
شنبه 12 شهریور 1390, 08:51 صبح
افففففففففف.
فکر کردم دیگه بحثمون تموم شده . اگه خیلی ناراحتی باشه کوتاه اومدم ولی من سر حرف خودم هستم(البته برای خودم) شما مختاری هر جور خواستی فکر کنی و بنویسی ، ولی اون ide رو کوتاه نمی آیم! مثل اینکه شما با راپید پی اچ پی کار نکردید اون ها هم ide نیستند!
ولی از کدی که برای فیلتر پسوند ها گذاشتی ممنونم. اون راهی رو که پیشنهاد دادم عملی هست دیگه.
من که سر دشمنی ندارم با کسی ...
برای اون دوستمون هم می نویسم: شما اگر جنبه اموزشی کار می کنی می تونی سری به اسکریپت های آماده بزنی و اون ها رو ترجمه کنی .
به نظر من اسکریپت آپلود ایران بلاگ برای مطالعه خوب باشه.
یا علی

jalaladdin
شنبه 12 شهریور 1390, 13:51 عصر
برای آپلود تصویر از اینک استفاده میکنم اما تصویر آپلود نمیشود قسمت elseدستور شرطی اجرا میگردد مشکل کجاست؟

<?php
$uploadDir = 'upload/';


if(isset($_POST['upload']))
{

$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];

$filePath = $uploadDir . $fileName;
$ext = explode(".", $_FILES['userfile']['name']);
$ext = $ext[ count($ext) - 1 ];

$mime = $_FILES['userfile']['type'];

/*****/

$valid_mime_image = array("application/jpg", "application/png", "application/gif", "application/bmp", "application/jpeg");

/*****/

$valid_mime = $valid_mime_image;
$valid_ext = array("jpg", "jpeg", "gif", "png", "bmp");
if(in_array($ext, $valid_ext) && in_array($mime, $valid_mime)){

$result = move_uploaded_file($tmpName, $filePath);
if (!$result) {

//echo'<font color="#FF0000">Error uploading file</font>';


}}
else{

$select='<font color="#FF0000"><br/>لطفا یک فایل از نوع (jpg ,jpeg ,gif ,png ,bmp) انتخاب کنید</font>';

}

$link=mysql_connect("localhost","root","");
if(!$link){
print "not connect";
}
$db_selected = mysql_select_db('adn', $link);
$fileName = addslashes($fileName);
$filePath = addslashes($filePath);
$name=mysql_real_escape_string($_POST['name1']);
if(!empty($fileName) && !empty($filePath) ){

$ext = explode(".", $_FILES['userfile']['name']);
$ext = $ext[ count($ext) - 1 ];

$mime = $_FILES['userfile']['type'];

/*****/

$valid_mime_image = array("application/jpg", "application/png", "application/gif", "application/bmp", "application/jpeg");

/*****/

$valid_mime = $valid_mime_image;
$valid_ext = array("jpg", "jpeg", "gif", "png", "bmp");
if(in_array($ext, $valid_ext) && in_array($mime, $valid_mime)){


//+-+-+-+-+-+-+-+-+-
mysql_error();
$mysql=mysql_query("INSERT INTO image(name1,name, size, type, path )".
"VALUES ('".$name."','".$fileName."', '".$fileSize."', '".$fileType."', '".$filePath."')");
mysql_query("SET NAMES UTF8");
mysql_set_charset("utf8");}
if($mysql )
print ('<font color="#0066FF"><center>فایل با موفقیت آپلود شد </font></center>');
}
else{

$select='<font color="#FF0000"><br/>لطفا یک فایل از نوع (jpg ,jpeg ,gif ,png ,bmp) انتخاب کنید</font>';

}
}


else{}

?>
<form action="<?php $_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data" id="signupForm" name="posts" style="direction:rtl">
<br /> نام فایل: <input name="name1" type="text" id="man2" dir="rtl" class="bg-blue02" /> <br>
<br /> انتخاب تصویر: <input name="userfile" type="file" /> <?php echo $select;?><p/><center/>
<input name="upload" type="submit" value="آپلود" />
</form>

armsoftpc
یک شنبه 13 شهریور 1390, 12:18 عصر
به نام خدا
با سلام دوستان عزیز
اگر امکان داره دوستان یک کد آزاکسی بگذارند ، که بتونیم با اون هر نوع فایل را آپلود کرده و به پوشه مورد نظر انتقال دهیم!
لطفا کد تست شده باشه!
موفق باشید.