Загрузка файла не сервер

  • Автор темы tilekus
  • Дата начала
T

tilekus

Нужно загрузить файл на сервер. Но переименовать его, например текущей датой, чтобы названия всех файлов были уникальными. Я заранее не знаю какой тип фалов будет загружаться, т.е. я не могу сказать что пользователи будут закачивать только вордовские файлы или рисунки.
Сам принцип организации закачки файла я знаю. Но вот как пееименовть :)
Вот сама форма для закачки
Код:
<form action="uploader.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename"><br>
<input type="text" name="nazvanie"><br> 
<input type="submit" value="Загрузить"><br>
</form>

А это обрабатывающий скрипт
Код:
<?php
if(copy($_FILES["filename"]["tmp_name"], "../uploads/".$_FILES["filename"]["name"]))
{
echo("Файл успешно загружен <br>");
} else {
echo("Ошибка загрузки файла");
}
?>

Подскажите что мне нужно переделать.
 
N

nws

Во-первых делай проверку на тип файла (doc, xls, image и т.д.) иначе залбьют тебе шелл и положат твой сайт

Вот пример кода:



PHP:
function image_valid($type)
{
$file_types = array('image/pjpeg' => 'jpg', 'image/jpeg' => 'jpg', 'image/jpeg' =>
'jpeg', 'image/gif' => 'gif', 'image/X-PNG' => 'png', 'image/PNG' => 'png',
'image/png' => 'png', 'image/x-png' => 'png', 'image/JPG' => 'jpg', 'image/GIF' =>
'gif', 'image/bmp' => 'bmp', 'image/bmp' => 'BMP', );
if (!array_key_exists($type, $file_types))
{
return false;
}
else
{
return true;
}
}


function upload()
{

$image_upload_error = '';
//$data - to 4to iz $_POST'a prihodit
if ($data)
{
$upload_dir = $_SERVER['DOCUMENT_ROOT'].'/uploads/';
$image_name = $_FILES['data']['name']['Product']['image'];
$tmp_image_name = $_FILES['data']['tmp_name']['Product']['image'];
//$new_image_name - imea faila na servere budet image1_31564165415616.jpg
$new_image_name = $image_name.'_'.time();
$image_type = $_FILES['data']['type']['Product']['image'];

if ($image_valid($image_type))
{
if (move_uploaded_file($tmp_name, $upload_dir.$new_image_name))
{
$image_upload_error = 'Картинка загружена';
}
else
{
$image_upload_error = 'Картинка не загружена';
}
}
else
{
$image_upload_error = 'Загружаемый файл не является изображением';
}
}
}
 
B

bracomp

$bra="bra"; // prefix
$dir="./files/"; // каталог, куда закачиваем
if ($_FILES['filename']['name'])
{ $file=$_FILES['filename']['tmp_name'];
$type=$_FILES['filename']['name'];
$p=strrpos($type,".");
$type=substr($type,$p+1);
$tmpfname = tempnam($dir, "$bra");
$tmpfname=str_replace("\\",'/',$tmpfname);
unlink($tmpfname);
$p=strrpos($tmpfname,"/");
$fname=substr($tmpfname,$p+1);
$p=strrpos($fname,".");
if($p>0) $fname=substr($fname,0,$p+1).$type; /// Windows
else $fname.=".".$type; // Linux
$FM=move_uploaded_file($_FILES['filename']['tmp_name'], $dir.$fname);
if ($FM ) echo " Ok";
else echo "Error upload";
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!