PDA

View Full Version : آپلود فايل ازطريق اين كد



bps20590
دوشنبه 18 شهریور 1387, 11:53 صبح
باسلام
من يك سايت دارم كه دريك قسمت اون ميخواهم فايل داخل آن آپلود كنم اينكار روي هاست رايگان درست انجام مي شود ولي هرگاه روي هاست اصلي قرار مي دهم اين كارا انجام نمي دهد نمي دونم بايد چكار كنم لذا كدبرنامه رااينجامي زارم تا ببينيد چه مشكلي وجود داره آيا پرميشن را بايد روي يك كد خاص تنظيم كنم ويا مشكل از كد زير است.ضمنا ببخشيد كد بصورت درهم ميباشد براي اينكه نمي دونم چطور بايد دراينجا وداخل چه عبارتي قرار بدم كه درست نمايش بده ضمنا مدام اين پيغام داده مي شود:
You cannot upload to the specified directory, please CHMOD it to 777.

اينهم كدبرنامه
<html>
<body >
<?php
// Configuration - Your Options
$allowed_filetypes = array('.zip','.rar','.pdf'); // These will be the types of file that will pass the validation.
$max_filesize = 5242880; // Maximum filesize in BYTES (currently 10MB).
$upload_path = 'download'; // The place the files will be uploaded to (currently a 'files' directory).
$filename = $_FILES['uploaded']['name']; // Get the name of the file (including file extension).
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); // Get the extension from the filename.

// Check if the filetype is allowed, if not DIE and inform the user.
if(!in_array($ext,$allowed_filetypes))
die('شما مجاز به آپلود فايل انتخابي نميباشيد');

// Now check the filesize, if it is too large then DIE and inform the user.
if(filesize($_FILES['uploaded']['tmp_name']) > $max_filesize)
die('حجم فايل انتخابي بيش از اندازه تعيين شده ميباشد');
chmod($upload_path, 0644);
chmod($_FILES['uploaded']['tmp_name'],0644);
// Check if we can upload to the specified path, if not DIE and inform the user.
if(!is_writable($upload_path))
die('You cannot upload to the specified directory, please CHMOD it to 777.');

// Upload the file to your specified path.
if(move_uploaded_file($_FILES['uploaded']['tmp_name'],$upload_path."/" . $filename)){

echo '<br><center>فايل شما با موفقيت آپلود شد جهت ديدن فايل <a href="' . $upload_path . $filename . '" title="فايل آپلود شده">اينجــا</a>را كليك كنيد</center>'; // It worked.
$group_asl=trim($_POST['group_asl']);
$group_far=trim($_POST['group_far']);
$onvan=trim($_POST['onvan']);
$tozihat=trim($_POST['tozihat']);
$state_prj=trim($_POST['state_prj']);
$type_file=trim($_POST['type_file']);
$file_name=$upload_path."/".$filename;
//basename( $_FILES['uploaded']['name']);
$size_file=ceil($_FILES["uploaded"]["size"] / 1024);
$document=$_POST['document'];
$page=$_POST['page'];
$price=$_POST['price'];
mysql_query("SET NAMES 'utf-8'", $link);
$query="INSERT INTO upload VALUES('','$group_asl','$group_far', '$onvan','$tozihat','$state_prj','$type_file','$fi le_name','$size_file', '0','$document','$page','$price')";
// make delta the current db
//$db_selected = mysql_select_db('delta', $link);
$result=mysql_query($query,$link);
echo '<br><br><center><b><font color="#0000FF">*مراحل آپلودباموفقيت انجام شد*</font></b></center><br>
<center><a href="sabt_prj.php" style="color:black"><b>برگشت </b></a></center><br>';
}
else
echo 'There was an error during the file upload. Please try again.'; // It failed :(.

?>

</body>
</html>

Lagon666
دوشنبه 18 شهریور 1387, 12:21 عصر
باید بری توی File Manager هاستت پوشه ای رو که فایل ها توش آپلود میشن ، اجازه ی دسترسی به اون پوشه رو به 777 تغییر بدی.


<html>
<body >
<?php
// Configuration - Your Options
$allowed_filetypes = array('.zip','.rar','.pdf'); // These will be the types of file that will pass the validation.
$max_filesize = 5242880; // Maximum filesize in BYTES (currently 10MB).
$upload_path = 'download'; // The place the files will be uploaded to (currently a 'files' directory).
$filename = $_FILES['uploaded']['name']; // Get the name of the file (including file extension).
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); // Get the extension from the filename.
// Check if the filetype is allowed, if not DIE and inform the user.
if(!in_array($ext,$allowed_filetypes))
die('شما مجاز به آپلود فايل انتخابي نميباشيد');
// Now check the filesize, if it is too large then DIE and inform the user.
if(filesize($_FILES['uploaded']['tmp_name']) > $max_filesize)
die('حجم فايل انتخابي بيش از اندازه تعيين شده ميباشد');
chmod($upload_path, 0644);
chmod($_FILES['uploaded']['tmp_name'],0644);
// Check if we can upload to the specified path, if not DIE and inform the user.
if(!is_writable($upload_path))
die('You cannot upload to the specified directory, please CHMOD it to 777.');
// Upload the file to your specified path.
if(move_uploaded_file($_FILES['uploaded']['tmp_name'],$upload_path."/" . $filename)){
echo '<br><center>فايل شما با موفقيت آپلود شد جهت ديدن فايل <a href="' . $upload_path . $filename . '" title="فايل آپلود شده">اينجــا</a>را كليك كنيد</center>'; // It worked.
$group_asl=trim($_POST['group_asl']);
$group_far=trim($_POST['group_far']);
$onvan=trim($_POST['onvan']);
$tozihat=trim($_POST['tozihat']);
$state_prj=trim($_POST['state_prj']);
$type_file=trim($_POST['type_file']);
$file_name=$upload_path."/".$filename;
//basename( $_FILES['uploaded']['name']);
$size_file=ceil($_FILES["uploaded"]["size"] / 1024);
$document=$_POST['document'];
$page=$_POST['page'];
$price=$_POST['price'];
mysql_query("SET NAMES 'utf-8'", $link);
$query="INSERT INTO upload VALUES('','$group_asl','$group_far', '$onvan','$tozihat','$state_prj','$type_file','$fi le_name','$size_file', '0','$document','$page','$price')";
// make delta the current db
//$db_selected = mysql_select_db('delta', $link);
$result=mysql_query($query,$link);
echo '<br><br><center><b><font color="#0000FF">*مراحل آپلودباموفقيت انجام شد*</font></b></center><br>
<center><a href="sabt_prj.php" style="color:black"><b>برگشت </b></a></center><br>';
}
else
echo 'There was an error during the file upload. Please try again.'; // It failed :(.
?>

bps20590
دوشنبه 18 شهریور 1387, 16:33 عصر
دوست عزیز اینکارروکردم ولی بازهم همین پیغام داده میشه

Lagon666
دوشنبه 18 شهریور 1387, 17:20 عصر
شما پرمیشن فولدر رو 777 می کنی، اما با این کدی که زدی دوباره 644 میشه. این خط رو پاک کن.


chmod($upload_path, 0644);

yasercomeng
سه شنبه 19 شهریور 1387, 15:42 عصر
سلام. من مي خواستم يه فايل رو تو سرورم آپلود كنم اما نشد كه نشد.من كدهاي زيادي رو امتحان كردم ولي هيچ كدوم عملاً عمل آپلود رو انجام نمي داد. يعني من كه چيزي تويه پوشه ي www نرم افزار Wamp خودم نديدم. بايد فايل آپلود شده بياد اونجا ديگه مگه نه؟

<?php
$command=$_POST["command"];
If($command == "") {
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>File Uploading Interface</TITLE>
</HEAD>
<BODY>
<CENTER>
<BR><BR>
<FORM ENCTYPE="multipart/form-data" NAME=MyForm ACTION=submit.php METHOD="POST">
<INPUT TYPE="hidden" NAME="command" VALUE="1">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="100000">
<TABLE>
<TR>
<TD>Choose File</TD>
<TD><INPUT NAME="MyFile" TYPE="File"></TD>
</TR>
<TR>
<TD COLSPAN="2"><INPUT NAME="submit" VALUE="Upload" TYPE="submit"></TD>
</TR>
</TABLE>
</FORM>
</CENTER>
</BODY>
</HTML>
<?php
}Else{
$target_path = "business/";

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

Lagon666
چهارشنبه 20 شهریور 1387, 00:25 صبح
$upload_path = 'download'; // The place the files will be uploaded to (currently a 'files' directory).

این یعنی اینکه باید یه پوشه ای به نام download موجود باشه تا فایل های آپلود شده برن توش. من شخصا امتحان کردم و آپلود انجام شد.



<html>
<body >
<?php
// Configuration - Your Options
$allowed_filetypes = array('.zip','.rar','.pdf'); // These will be the types of file that will pass the validation.
$max_filesize = 5242880; // Maximum filesize in BYTES (currently 10MB).
$upload_path = 'download'; // The place the files will be uploaded to (currently a 'files' directory).
$filename = $_FILES['uploaded']['name']; // Get the name of the file (including file extension).
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); // Get the extension from the filename.
// Check if the filetype is allowed, if not DIE and inform the user.
if(!in_array($ext,$allowed_filetypes))
die('شما مجاز به آپلود فايل انتخابي نميباشيد');
// Now check the filesize, if it is too large then DIE and inform the user.
if(filesize($_FILES['uploaded']['tmp_name']) > $max_filesize)
die('حجم فايل انتخابي بيش از اندازه تعيين شده ميباشد');
//chmod($upload_path, 0644);
chmod($_FILES['uploaded']['tmp_name'],0644);
// Check if we can upload to the specified path, if not DIE and inform the user.
if(!is_writable($upload_path))
die('You cannot upload to the specified directory, please CHMOD it to 777.');
// Upload the file to your specified path.
if(move_uploaded_file($_FILES['uploaded']['tmp_name'],$upload_path."/" . $filename)){
echo '<br><center>فايل شما با موفقيت آپلود شد جهت ديدن فايل <a href="' . $upload_path . $filename . '" title="فايل آپلود شده">اينجــا</a>را كليك كنيد</center>'; // It worked.
$group_asl=trim($_POST['group_asl']);
$group_far=trim($_POST['group_far']);
$onvan=trim($_POST['onvan']);
$tozihat=trim($_POST['tozihat']);
$state_prj=trim($_POST['state_prj']);
$type_file=trim($_POST['type_file']);
$file_name=$upload_path."/".$filename;
//basename( $_FILES['uploaded']['name']);
$size_file=ceil($_FILES["uploaded"]["size"] / 1024);
$document=$_POST['document'];
$page=$_POST['page'];
$price=$_POST['price'];
mysql_query("SET NAMES 'utf-8'", $link);
$query="INSERT INTO upload VALUES('','$group_asl','$group_far', '$onvan','$tozihat','$state_prj','$type_file','$fi le_name','$size_file', '0','$document','$page','$price')";
// make delta the current db
//$db_selected = mysql_select_db('delta', $link);
$result=mysql_query($query,$link);
echo '<br><br><center><b><font color="#0000FF">*مراحل آپلودباموفقيت انجام شد*</font></b></center><br>
<center><a href="sabt_prj.php" style="color:black"><b>برگشت </b></a></center><br>';
}
else
echo 'There was an error during the file upload. Please try again.'; // It failed :(.
?>

yasercomeng
چهارشنبه 20 شهریور 1387, 16:57 عصر
نه آقا مشكل من كه حل نشد. در ضمن اين كدي كه نوشتين واسه لينوكسه اصلاً تويه سيستم عامل ويندوز اجازه ي 777 نياز نيست!!
در ضمن من پوشه ي Business رو كه تو كد نوشتم تويه مسير c:\wamp\www دارم اما هر فايلي كه از كامپيوتر مثلاً از درايو D آپلود مي كنم عملاً آپلود نمي شه. ولي پيغام انجام موفق آپلود داده ميشه اما چيزي تو پوشه ي business نيست.
در ضمن وقتي مي خوام مقدار tmp_name فايل رو چاپ كنم هيچ چيزي نمايش داده نميشه.

Lagon666
چهارشنبه 20 شهریور 1387, 17:14 عصر
به جای move_uploaded_file از copy استفاده کن. ببین بازم مشکل داری؟

yasercomeng
پنج شنبه 21 شهریور 1387, 02:36 صبح
آره ميخواستم بگم اين كارو كردم ولي يادم رفت. يه بار ديگه ميگم من وقتي مي خوام مقدار tmp_name رو چاپ كنم هيچي بهم نشون نميده.
يه چيزي من مشكلاي عجيب ديگه اي هم با WAMP خودم دارم.از جمله اينكه مثلاً وقتي كد زير رو استفاده مي كنم بازم نمي تونم اطلاعات رو به صورت فارسي از پايگاه دادم بخونم در حالي كه همين جستجو تو كامپيوتر ديگران درست جواب ميده.به نظرتون مشكل از WAMP نيست؟
البته دوست من هم از WAMP مال من استفاده مي كنه اما مال اون جواب ميده.

mysql_query("set names 'utf8'",$connection);
mysql_query("set char set utf8",$connection);

ممنون از پاسخ گويي شما.

Itist82
دوشنبه 24 فروردین 1388, 13:30 عصر
نه آقا مشكل من كه حل نشد. در ضمن اين كدي كه نوشتين واسه لينوكسه اصلاً تويه سيستم عامل ويندوز اجازه ي 777 نياز نيست!!
در ضمن من پوشه ي Business رو كه تو كد نوشتم تويه مسير c:\wamp\www دارم اما هر فايلي كه از كامپيوتر مثلاً از درايو D آپلود مي كنم عملاً آپلود نمي شه. ولي پيغام انجام موفق آپلود داده ميشه اما چيزي تو پوشه ي business نيست.
در ضمن وقتي مي خوام مقدار tmp_name فايل رو چاپ كنم هيچ چيزي نمايش داده نميشه.

شما چرا اونجا دنبال فایله می گردی؟! فایل باید توی فولدری به اسم تعیین شده توی فولدر پروژه ی خودتون باشه. یعنی اگه فولدری که فایل هاتی پروژه تون رو توش ریختید MyProj باشه فایل شما باید بیاد توی c:\wamp\www\MyProj\business

mohammadhosin
چهارشنبه 28 دی 1390, 17:54 عصر
سلام دوستان
منم مشكل اين دوستمون رو دارم
سيستمم ويندوزه و از سرور آپاچي استفاده ميكنم
از چند كد مختلف استفاده كردم يكيش مثل اين

<html><head><title>PHP's FileUPLOAD</title></head><body>
<form method="post" action="upload.php" enctype="multipart/form-data">
<input name="userfile[]" type="file">
<input name="userfile[]" type="file">
<input name="userfile[]" type="file">
<input name="userfile[]" type="file">
<input name="userfile[]" type="file">
<input name="userfile[]" type="file">
<input type="submit" value="Upload!!!" >
</form>



<? php
for($i=0;$i<sizeof($userfile);$i++)
{
if(!$userfile_size[$i])
continue;

$UPLOAD = fopen( $userfile[$i], "r" );
$contents = fread( $UPLOAD,$userfile_size[$i]);
fclose( $UPLOAD );
$SAVEFILE = fopen( "upload//".$userfile_name[$i], "wb" );
fwrite( $SAVEFILE, $contents,$userfile_size[$i] );
fclose( $SAVEFILE );
}
echo "Server HaD Receive the Upload Files!";
?>



ولي نميدونم چرا باز اون فولدر براي ذخيره فايل رو ايجاد نميكنه
يا اصلا اونو كجا ذخيره ميكنه
چون پهناي باند رو كه چك ميكنم فايله آپلود ميشه ولي ....