آپلود فایل

jalaladdin

Active Member
برای قسمت آپلود وب سایتم این کد را قرار دادم اما وقتی فایلی را انتخاب میکنم و روی آپلود کلیک میکنم صفحه اصلی وب سایت باز میشود اما اگر این کد را در صفحه دیگری امتحان کنم فایل آپلود میشود به نظر شما مشکل از کجاست؟
PHP:
<?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>
 

Masoud1365

مدیر انجمن
آدرس بقیه صفحاتت چطوریه ؟ ( با htaccess آدرسهات رو تغیر دادی ؟ )
حتما توی بقیه صفحات نمیتونه پوشه upload رو پیدا کنه !
 

jalaladdin

Active Member
برای قسمت آپلود سایت از این کد استفاده میکنم اما کد کار نمیکنه !!!!!!!!!
PHP:
 <?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>
 

phpweb

Active Member
برای قسمت آپلود سایت از این کد استفاده میکنم اما کد کار نمیکنه !!!!!!!!!
PHP:
 <?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>
حالا که دارید روی سیستم آپلود کار می کنید، پیشنهاد می کنم بجای این سیستم که نوشتین روی ftp وقت بذارید تا بعدا دوباره کاری نشه !

من قبلا یه سیستم کامل نوشتم ولی بعدا مشتریها می گفتن که امکاناتش باید مثل دانلودرها باشه.
 

jalaladdin

Active Member
وقتی روی آپلود کلیک میکنم مرورگر این پیغام را به من نشان میده
PHP:
echo "Error uploading file";
 

phpweb

Active Member
اگر در مورد ftp توضیح دهید ممنون میشم
اگر یه فایل رو با پی اچ پی آپلود کنید، و به هر دلیلی اتصال قطع بشه مجددا باید از اول آپلود رو شروع کنید.

دلیلی دیگه اینه که می تونید مثل دانلودر ها فایلها رو با سرعت چند برابر آپلود و دانلود کنید.

اگه اینا رو توی سایتتون قرار ندید، مشتری شما رو :mad:
ولی اگه از اینها استفاده کنید مشتری :cool:

در مورد مشکلتون هم باید بگم که دوستمون توضیح دادن، پی اچ پی پوشه uploade رو پیدا نمی کنه. اگر از mvc استفاده می کنید باید بگم بگم این مشکل زیاد پیش می یاد.
 

jalaladdin

Active Member
مگه این آدرس پوشه نیست
PHP:
$uploadDir = 'upload/';
پوشه upload هم وجود دارد امااین پیغام خطا نشان میده
PHP:
echo "Error uploading file";
 

phpweb

Active Member
وقتی روی آپلود کلیک میکنم مرورگر این پیغام را به من نشان میده
PHP:
echo "Error uploading file";
آدرس رو به شکل زیر بنویسید ببینید مشکل برطرف می شه؟
PHP:
$uploadDir = '/upload/';
$uploadDir = './upload/';
همچنین لطفا مسیر کامل قرار گرفتن پوشه ها رو به همرام مسیر کامل آپلود قرار بدید.
 

phpweb

Active Member
خیر مشکل همچنان وجود دارد
این یه فرم ساده هست و نبیاد مشکل خاصی داشته باشه، اگه مسیر آپلود درسته و با htaccess تنظیمات رو تغییر ندادید، تنها مشکل می تونه این باشه که فایل ارسال نشده !

به کمک echo نام فایل آپلود شده رو نمایش بدید و ببینید که فایل اصلا ارسال شده یا نه.

اگر این هم نبود دیگه من نمی تونم کمکی بکنم.
---
این مطلب بصورت مستقیم به بحث شما مربوط نمی شه ولی باید بدونید که برای امنیت بیشتر حتما باید از تابع is_uploaded_file استفاده کنید.
 

jalaladdin

Active Member
چه تغییراتی در کد آپلود اعمال کنم تا فقط اجازه چهار نوع فایل(doc,pdf,zip,powerpoint) برای اپلود را بدهد
 

phpweb

Active Member
چه تغییراتی در کد آپلود اعمال کنم تا فقط اجازه چهار نوع فایل(doc,pdf,zip,powerpoint) برای اپلود را بدهد
باید پسوندهای مورد نظرخودتون رو توی یه آرایه قرار بدید و وقتی فایل آپلود شد به کمک تابع زیر اول پسوند فایل آپلود شده رو بگیرید و بعد با in_arrayچک کنید که این پسوند توی آرایه هست یا نه.
PHP:
$str=end(explode('.',$filename));
 

jalaladdin

Active Member
برای آپلود تصویر از این کد استفاده میکنم اما تصویر آپلود نمیشود به نظر شما مشکل از کجا میتونه باشه؟
PHP:
<?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('adm', $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>
 

جدیدترین ارسال ها

بالا