ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

Проверка имени файла

 

3910
Дмитрий @Q-Tec
Пытался, я сегодня поставить "Проверку имени файла" чтобы кантинка 1 не загружалась по 100 раз на сервер, а если есть, загрузка прекращалась и писалось типа "Такой файл уже есть"

Вот весь код загрузки картинки на сервер:

<?
if ($REQUEST_METHOD == "POST")
{

/* SUBMITTED INFORMATION - use what you need
* temporary filename (pointer): $imgfile
* original filename : $imgfile_name
* size of uploaded file : $imgfile_size
* mime-type of uploaded file : $imgfile_type
*/

/*== upload directory where the file will be stored
relative to where script is run ==*/
$uploaddir = ".";

/*== get file extension (fn at bottom of script) ==*/
/*== checks to see if image file, if not do not allow upload ==*/
$pext = getFileExtension($imgfile_name);
$pext = strtolower($pext);

if (($pext != "jpg") && ($pext != "jpeg") && ($pext != "gif") && ($pext != "png"))
{
print "<h1>Ошибка</h1>Неправельный формат изображения...(.jpg / .jpeg / .gif / .png)<br>";
print "Формат вашего файла: <b>.$pext</b></p>\n";

/*== delete uploaded file ==*/
unlink($imgfile);
exit();
}
/*== setup final file location and name ==*/

$final_filename = str_replace(" ", "_", $imgfile_name);
$newfile = $uploaddir . "/$final_filename";

/*== move file to proper directory ==*/
if (!copy($imgfile,"$newfile"))


{
print "Ошибка, файл слишком большой.";
exit();
}

/*== delete the temporary uploaded file ==*/
unlink($imgfile);
print "Ссылка на картинку: <input name=nick type=text size=100 class=text value=upload/$final_filename>";
}
?>

Пытался привязать функцию:

if ($imgfile_name != "") {

if (file_exists("$uploaddir/$imgfile_name ")) {
print "Файл уже существует, переименуйте файл.<br>";
}

Как только я эту функцию не ставил, никак не хочет работать, то выдаётся когда ненадо, то в обще не выдаётся... в общем, люди добрые помогите, напарился я с ней за 2 часа. 😵

20090
Dimitry @Dimitry
is_file()

3910
Дмитрий @Q-Tec
димон, ты всегда пишешь такими каротенькими фразами, что непонятно даже, яж только Учусь ))

меня волнует вопросы, куда это вставить... потомучто уже незнаю куда... и правильная ли это функция

Отредактировано Q-Tec - 11.02.2008
20090
Dimitry @Dimitry
попробуй вписать это в гугле если незнаешь...
и ещё есть хотябы это..
https://forum.vmeste.eu/webmasters/php42/f/ref.filesystem.html

3910
Дмитрий @Q-Tec
Почитал, посмотрел к гугле, всё равно не понял, куда её ставить... везде написана только функция, как её ставить или после чего не нашёл.

20090
Dimitry @Dimitry
вместо
file_exists

3910
Дмитрий @Q-Tec
спасибо, а на второй вопрос можешь ответить "куда всю эту красоту вставить?"... потому что я рально переставлял её куда только можно. 😊

Отредактировано Q-Tec - 11.02.2008
20090
Dimitry @Dimitry
if ($imgfile_name != "") {

if (is_file("$uploaddir/$imgfile_name ")) {
print "Файл уже существует, переименуйте файл.<br>";
die();
}


вначало куданить после

if ($REQUEST_METHOD == "POST")
{

3910
Дмитрий @Q-Tec
облом получается, скрипт просто отказывается работать.

526
Kreg-Heg @Kreg-Heg
попробуй так:

if ($imgfile_name != "")
{

if (file_exists($uploaddir."/".$imgfile_name )) {
print "Файл уже существует, переименуйте файл.<br>";
}
}

но лучше использовать как сказал Demon is_file() (типа надежнее) хотя отличается только тем что is_file еще умеет разделять директории от файлов, а также смотрит на права файла, хотя в твоем случае это не важно, попробуй так как я написал, просто странно, что переменные у тебя в ковычках и не только в этой части кода

Отредактировано Kreg-Heg - 13.02.2008
3910
Дмитрий @Q-Tec
вставил после
if ($REQUEST_METHOD == "POST")
{

и не хочет, так же грузит картинку повторный раз

526
Kreg-Heg @Kreg-Heg
попробуй так


<?
if ($REQUEST_METHOD == "POST")
{

$uploaddir = ".";
$pext = getFileExtension($imgfile_name);
$pext = strtolower($pext);

if ($imgfile_name != "")
{
if (file_exists($uploaddir."/".$imgfile_name )) {
exit("Файл уже существует, переименуйте файл");
}
}


if (($pext != "jpg") && ($pext != "jpeg") && ($pext != "gif") && ($pext != "png"))
{
echo("<h1>Ошибка</h1>Неправельный формат изображения...(.jpg / .jpeg / .gif / .png)<br>");
echo("Формат вашего файла: <b>".$pext."</b></p>\n");
unlink($imgfile);
exit();
}


$final_filename = str_replace(" ", "_", $imgfile_name);
$newfile = $uploaddir. "/".$final_filename;


if (!copy($imgfile,$newfile))
{
echo("Ошибка, файл слишком большой.");
unlink($imgfile);
exit();
}


echo "Ссылка на картинку: <input name='nick' type='text' size='100' class='text' value='upload/".$final_filename."'">;
}
?>

Отредактировано Kreg-Heg - 14.02.2008
3910
Дмитрий @Q-Tec
спасибо за проделанную работу, но не хочет фурычит, при загрузке ничего не отображает и картинка на серв не грузит 😵

526
Kreg-Heg @Kreg-Heg
права на директорию в которую пишешь 0777 ? есть ли в корне директория tmp? если да, то какие на неё права? попойже попробую на своем хосте протестить, скинь код формы с которой отправляется картинка

3910
Дмитрий @Q-Tec
<form action="upload/index.php" method="POST"
enctype="multipart/form-data" target="center">
<input type="hidden" name="MAX_FILE_SIZE" value="1024000">
<p>Файл: <input type="file" name="imgfile"> <input type="submit" value="Загрузить">
</form>

Всё есть, на тмп 777

526
Kreg-Heg @Kreg-Heg
создаешь три файла в одной директории upload.html upload.php и папку immg с правами 0777

upload.html
<html>
<head>
<title>Загрузка файлов на сервер</title>
</head>
<body>
<h2><p><b> Форма для загрузки файлов </b></p></h2>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename"><br>
<input type="submit" value="Загрузить"><br>
</form>
</body>
</html>

upload.php
<html>
<head>
<title>Результат загрузки файла</title>
</head>
<body>
<?php
if($_FILES["filename"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit();
}

if (($HTTP_POST_FILES['filename']['type']!="image/gif") && ($HTTP_POST_FILES['filename']['type']!="image/jpeg")
&& ($HTTP_POST_FILES['filename']['type']!="image/jpeg") && ($HTTP_POST_FILES['filename']['type']!="image/png")) {
exit("неверное расширение загружаемой картинки!");
}

$_FILES["filename"]["name"] = str_replace(" ", "_", $_FILES["filename"]["name"]);
if (file_exists("immg/".$_FILES['filename']['name'] )) {
exit("Файл уже существует, переименуйте файл");
}

if(copy($_FILES["filename"]["tmp_name"],
"./immg/".$_FILES["filename"]["name"]))
{
echo("Файл успешно загружен <br>");
echo("Характеристики файла: <br>");
echo("Имя файла: ");
echo($_FILES["filename"]["name"]);
echo("<br>Размер файла: ");
echo($_FILES["filename"]["size"]);
echo("<br>Тип файла: ");
echo($_FILES["filename"]["type"]);
} else {
echo("Ошибка загрузки файла");
}
?>
</body>
</html>

я проверил -- всё норм

3910
Дмитрий @Q-Tec
Kreg-Heg, Спасибо тебе огромное, всё прекрасно работает... огромное спасибо ещё раз.