PDA

View Full Version : سوال: چرا تغییر نام و آپلود کردن فایل کار نمی کنه؟



ABZiko
پنج شنبه 16 بهمن 1393, 15:59 عصر
سلام، بنده این کد رو برای کد آپلودم نوشتم که اگر فایلی با همان نام وجود داشت ، تغییر نامش بده و آپلودش کنه، ولی کار نمی کنه، چرا؟


$newName=md5($name.time().rand(1,99999));
move_uploaded_file($tmp,'Uploads/'.$newName);

ABZiko
پنج شنبه 16 بهمن 1393, 19:38 عصر
دوستان کد کامل رو گذاشتم ، می شه راهنمایی کنید :


<?php

$name=$_FILES['userFile']['name'];
$tmp=$_FILES['userFile']['tmp_name'];
$size=$_FILES['userFile']['size'];;
$type=$_FILES['userFile']['type'];
$error=$_FILES['userFile']['error'];

$arr=array('image/png','image/jpeg');

if($error==UPLOAD_ERR_OK){

if(in_array($type,$arr)){

if($size<500000){

if(is_uploaded_file($tmp)){

if(move_uploaded_file($tmp,'Uploads/'.$name)){

if(!file_exists('Uploads/'.$name)){

echo "<div style='font-family:Segoe UI'>Your File Uploaded !</div>";

if($type==$arr){
$filename='Uploads/'.$name;
list($width,$height)=getimagesize($filename);
$canvas=imagecreatetruecolor(500,500);
$image=imagecreatefromjpg($filename);
imagecopyresampled($canvas,$image,0,0,0,0,500,500, $width,$height);}

else{

echo "Your File Doesn't Have Any Image !";}}

else{

$newName=md5($name.time().rand(1,99999));
move_uploaded_file($tmp,'Uploads/'.$newName);}}

else{

echo "<div style='font-family:Segoe UI'>Your File Didn't Upload !</div>";}}

else{

echo "<div style='font-family:Segoe UI'>There Is a Error with Your File !</div>";}}

else{

echo "<div style='font-family:Segoe UI'>Your File Is Big!</div>";}}

else{

echo "<div style='font-family:Segoe UI'>Your Format Isn't Supported !</div>";}}

else{

echo "<div style='font-family:Segoe UI'>Your File Isn't Good !</div>";}

?>

peymang
پنج شنبه 16 بهمن 1393, 20:26 عصر
شاید فرم یا فایل مشکل داشته باشه
من کد رو امتحان کردم آپلود کرد

مثلا اینطوری



<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="1.php" method="post" enctype="multipart/form-data">
<label>
<input type="file" name="userFile"/>
</label>
<input type="submit"/>
</form>


</body>
</html>

ABZiko
جمعه 17 بهمن 1393, 11:11 صبح
ممنون یعنی کاملا درست بود؟ و فایل های تکراری رو تغییر نام می داد؟

peymang
جمعه 17 بهمن 1393, 12:39 عصر
شرمنده، به سوال دقت نکردم اینطوری تغییرش دادم
و اون قسمت پسوند فایل رو من همیشه .png گذاشتم
می تونید اول بررسی کنید نوع فایل jpg هست یا png و بعد یه قسمت پسوند هم بهش اضافه کنید



<?php

$name = $_FILES['userFile']['name'];
$tmp = $_FILES['userFile']['tmp_name'];
$size = $_FILES['userFile']['size'];;
$type = $_FILES['userFile']['type'];
$error = $_FILES['userFile']['error'];

$arr = array('image/png', 'image/jpeg');

if ($error == UPLOAD_ERR_OK) {

if (in_array($type, $arr)) {
if ($size < 500000) {
if (is_uploaded_file($tmp)) {
$newName = md5($name . time() . rand(1, 99999));
echo $newName;
if (move_uploaded_file($tmp, 'Uploads/' . $newName . '.png')) {
if (!file_exists('Uploads/' . $newName . '.png')) {
echo "<div style='font-family:Segoe UI'>Your File Uploaded !</div>";

if ($type == $arr) {
$filename = 'Uploads/' . $name;
list($width, $height) = getimagesize($filename);
$canvas = imagecreatetruecolor(500, 500);
$image = imagecreatefromjpg($filename);
imagecopyresampled($canvas, $image, 0, 0, 0, 0, 500, 500, $width, $height);
} else {

echo "Your File Doesn't Have Any Image !";
}
}
} else {
echo "<div style='font-family:Segoe UI'>Your File Didn't Upload !</div>";
}
} else {
echo "<div style='font-family:Segoe UI'>There Is a Error with Your File !</div>";
}
} else {
echo "<div style='font-family:Segoe UI'>Your File Is Big!</div>";
}
} else {
echo "<div style='font-family:Segoe UI'>Your Format Isn't Supported !</div>";
}
} else {
echo "<div style='font-family:Segoe UI'>Your File Isn't Good !</div>";
}

ABZiko
جمعه 17 بهمن 1393, 12:44 عصر
ممنون، می شه به جای نوشتن دستی ژسوند، از $type استفاده کنم؟

peymang
جمعه 17 بهمن 1393, 14:38 عصر
type میمه رو بر می گردونه مثلا image/jpeg

میشه اینطوری نوشت

اینو بعد از خط 9 نوشت

$mime = array('image/png' => 'png', 'image/jpeg' => 'jpg');


و خط 18 و 19 رو اینطوری تغییر داد




if (move_uploaded_file($tmp, 'Uploads/' . $newName . '.' . $mime[$type])) {
if (!file_exists('Uploads/' . $newName . '.' . $mime[$type])) {

ABZiko
جمعه 17 بهمن 1393, 16:05 عصر
تشکر آقا پیمان ، خیلی به بنده کمک کردید.

ABZiko
جمعه 17 بهمن 1393, 16:15 عصر
ببخشید یک سوال دیگه هم داشتم، من می خوام برای فایل هایی مثل New.css.php هم یک فکری بکنم، می دونم باید از explode استفاده کنم ولی بلد نیستم، می شه راهنمایی کنید ؟

mamali-mohammad
جمعه 17 بهمن 1393, 16:18 عصر
شما باید پسوند آخر رو پیدا کنید :

$fileExt = 'New.css.php';echo strtolower(substr($fileName,strrpos($fileName,'.') +1)); // result : php