Загрузка Изображения Через Форму

Статус
Закрыто для дальнейших ответов.

Nordway

Active Member
Регистрация
06.08.2007
Сообщения
41
Подскажите следующий вопрос. Нужно в форме загрузить изображение, вообщем- то всё грузится, но есть одна бяка - грузятся вообще любые файлы. Полез в мануал, нашёл что мол нужно поставить MIME-тип "image/*" (загрузка только графических изображений). Сделал как написано:
Код:
<input type="file" name="___" accept="image/*">
но всё равно продолжают заливаться левые файлы, которые не имеют ничего общего с изображениями...
что делать?:)


п.с. вся форма примерно так...

листинг 1.php

Код:
<form enctype="multipart/form-data" action="2.php" method="post">
<input type="file" name="test" accept="image/*"><br>
<input type="submit" value="Отправить">
</form>

листинг 2.php

Код:
$dir = "images";
$file = $_FILES["test"]["tmp_name"];
$file_name = $_FILES["test"]["name"];
if (@move_uploaded_file($file, "$dir/$file_name"))
{
		print "<center>Загрузка файла $file_name в директорию $dir рошла успешно!</center>";
}
else
{
		print "<center><u>Ошибка:</u> невозможно загрузить файл $file!</center>";
}
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
Самая простая проверка )) Можно предумать по-сложнее
Код:
$File_name = $_FILES['File']['name'];
if(ereg("^(.*)\\.(gif|jpg|png)$",$File_name,$P))
{
  Закачиваем файл....
}
 

deMone

Злой страшный дядька
Регистрация
30.01.2006
Сообщения
937
Проверка посложнее:
Код:
if (getimagesize($_FILES['file']['tmp_name'])) {
   Закачиваем файл
}
 

Nordway

Active Member
Регистрация
06.08.2007
Сообщения
41
Проверка посложнее:
Код:
if (getimagesize($_FILES['file']['tmp_name'])) {
   Закачиваем файл
}
спасибо большое, последний вопросик: как в данный код ещё впихнуть проверку на ширину, тобишь if размер > 1024 тогда заливаем :) или дайте ссылку на мануал где рассказывается про синтаксис проверки размеров картинки ну и т.д.)
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
Вместе с картинкой нам передаются и некоторые данные
Код:
$size=getimagesize($_FILES['file']['tmp_name']);
Теперь $size массив
$size[0] высота
$size[1] ширина
$size[3] высота и ширина форматированные

Теперь можно сделать проверку!

Код:
if($size[0] < 1024 && $size[1] < 728)
{
выполяем заливку файла...
}
 

Nordway

Active Member
Регистрация
06.08.2007
Сообщения
41
Столкнулся со следующей проблемой. Суть в том что когда записывается файл он записывается с тем именем, кот. у пользователя. Как сделать так чтобы имя файла записывалась генерируемым именем? всё равно что там будет: буквы, цифры... что проще реализовать... + это должно решить проблемы перезаписи, при сущ. файле)
 

deMone

Злой страшный дядька
Регистрация
30.01.2006
Сообщения
937
исходя из представленного вами листинга в первом посте:
Код:
$dir = "images";
$file = $_FILES["test"]["tmp_name"];
$file_name = $_FILES["test"]["name"];
if (@move_uploaded_file($file, "$dir/$file_name"))
{
		print "<center>Загрузка файла $file_name в директорию $dir рошла успешно!</center>";
}
else
{
		print "<center><u>Ошибка:</u> невозможно загрузить файл $file!</center>";
}
нужно вместо
Код:
$file_name = $_FILES["test"]["name"];
вписать
Код:
$file_name = 'имя файла';
 

Nordway

Active Member
Регистрация
06.08.2007
Сообщения
41
Если я сделаю
Код:
$file_name = 'name.jpg';
то он мне все файлы будет заливать с таким именем и они всё время буду заменяться на последний. Нужно чтоб в конце ещё генерировалось число чтоль какое-нить типо name_587484828.jpg Хотя конечно всё равно что там будет, главно чтобы у файла, который закачивают изменялось название до .jpg
напрмиер заливают файл: классный рисунок.jpg
а на выходе было: image_8348438.jpg ну или что-нить подобное с каким-нить префиксом :unsure:
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
Попробуй так

Код:
$dir = "images";
$file = $_FILES["test"]["tmp_name"];
$file_name = $_FILES["test"]["name"];
$time = filemtime($_FILES['file']['tmp_name']);
if (@move_uploaded_file($file, $dir . "/image" . $time . ".jpg"))
{
		print "<center>Загрузка файла $file_name в директорию $dir рошла успешно!</center>";
}
else
{
		print "<center><u>Ошибка:</u> невозможно загрузить файл $file!</center>";
}
В $time содержится дата создания изображения или что-то типа этого прошедшее с 1 января 1970г в сек.
 

Nordway

Active Member
Регистрация
06.08.2007
Сообщения
41
Попробуй так

Код:
$dir = "images";
$file = $_FILES["test"]["tmp_name"];
$file_name = $_FILES["test"]["name"];
$time = filemtime($_FILES['file']['tmp_name']);
if (@move_uploaded_file($file, $dir . "/image" . $time . ".jpg"))
{
		print "<center>Загрузка файла $file_name в директорию $dir рошла успешно!</center>";
}
else
{
		print "<center><u>Ошибка:</u> невозможно загрузить файл $file!</center>";
}
В $time содержится дата создания изображения или что-то типа этого прошедшее с 1 января 1970г в сек.
Спасибо ещё раз!:)
 
Статус
Закрыто для дальнейших ответов.
Верх Низ