PDA

View Full Version : سوال: تغییر نام و ذخیره فایل در دیتابیس



adrenaline
یک شنبه 11 فروردین 1392, 12:32 عصر
این کد فقط عکس رو داخل فایل ذخیره می کنه و اگه تکراری باشه ارور می ده
چطوری میتونم قبل از ذخیره کردن عکس رو تغییر نام بدم٬ برای مثال به نام عکس٬ تایم استمپ رو هم اضافه کنم که تکراری نشه و نام جدید نمایش داده بشه و یا اون رو داخل دیتابیس ذخیره کنم؟

<?php
$t = mktime();
$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if (
(
($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png")
)
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts)
)
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

if (file_exists("../images/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"../images/" . $_FILES["file"]["name"]);
echo "Stored in: " . "../images/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>
<html>
<body>

<form action="" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>

css-man
یک شنبه 11 فروردین 1392, 12:46 عصر
این تابع رو نوشتم دقیقا همین کار رو میکنه شما فقط ار بخش آپلود عکسش استفاده کن




function addpic()
{
$error=array();
if(isset($_POST['submit']))
{
if($_POST['group']==0)
{
$error[]="لطفا یک نام را انتخاب کنید";

}
else
{
$group_id=$_POST['group'];
}
if(empty($error))
//uploaded

if(isset($_FILES['pic']))
{
if(!empty($_FILES['pic']['name']))
{
$name=$_FILES['pic']['name'];
$type=$_FILES['pic']['type'];
$tmp=$_FILES['pic']['tmp_name'];
$size=$_FILES['pic']['size'];
$err=$_FILES['pic']['error'];
$valid=array("image/jpeg","image/png","image/gif");
if($err==0)
{
if($size>=2000000)
{
$error[]="حجم فایل بیش از حد مجاز است(2mb)";
}
else
{
if(in_array($type,$valid))
{
if($type=$valid[0])
{
$ext=".jpg";
}
elseif($type=$valid[1])
{
$ext=".png";
}
elseif($type=$valid[2])
{
$ext=".gif";
}
$newname=md5(rand(000000,999999));
$newname2=$newname.$ext;
$copy=move_uploaded_file($tmp,"../images/".$newname2);
}
else
{
$error[]="فایل برای آپلود مجاز نیست".$size;

}
}
}
else
{
echo "$err";
}

}
else
{
$error[]="لطفا یک عکس انتخاب کنید";
}
}
///uploaded
if(empty($error))
{
$q="INSERT INTO `gallery` VALUES('','$newname2','$group_id')";
$r=$this->database->runQuery($q);
if($r)
{

echo "عکس با موفقیت درج شد";
echo $size;

}
else
{
echo mysql_error();
}

}
else
{
foreach($error as $val)
{
echo $val."<br />";
}
}

}
}

ravand
دوشنبه 12 فروردین 1392, 09:01 صبح
یه راه بهتر دارم برات . بیا شماره ی هر رکورد رو به نام عکس بده. و یه دستوری هم بنویس که اگه رکوردی نبود یه شماره ای رو مثل یک رو به عنوان نام اختصاص بده.