|
|
|
| Тема не раз поднималась, но у меня без ошибок не получается.
взял я пример скрипта загрузки с вашего сайта (http://softtime.ru/scripts/upload.php)
скрипт замечательно работает, но мне нужно переименовывать файл при загрузке так как мне надо...
ну с генерацией имени всё хорошо. помогите дополнить код, чтобы он переименовывал файл, а потом загружал.
<?php
if ($_POST['gofile'] ) {
$allowed_filetypes = array('.jpg','.JPG','.Jpg','.gif','.GIF','.Gif','.bmp','.BMP','.Bmp','.png','.PNG','.Png'); // допустимые форматы.
$max_filesize = 524288; // Допустимый размер загружаемого файла.
$upload_path = 'foto/'; // Директория для загрузки.
$new_name = "000001"; // Новое имя для файла.(типа получено динамически =) )
$filename = $_FILES['filename']['name'];
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);
if(strlen($_FILES['filename']['tmp_name']) < 1)
die('Сперва укажите файл для загрузки.');
if(!in_array($ext,$allowed_filetypes))
die('Данный формат не поддерживается.');
if(filesize($_FILES['filename']['tmp_name']) > $max_filesize)
die('Файл превышает допустимые значения.');
if(!is_writable($upload_path))
die('Директория закрыта от записи. обратитесь к системному администратору.');
if(move_uploaded_file($_FILES['filename']['tmp_name'],$upload_path . $filename))
die('Ваш фаил успешно загружен. <a href="' . $upload_path . $filename . '">смотреть</a><br> <a href="index2.php">загрузить ещё</a>');
else
echo 'При загрузке возникли ошибки. Попробуйте ещё раз.';
}
?>
|
помогите пожалуйста. очень нужно. | |
|
|
|
|
|
|
|
для: frisst
(21.02.2010 в 13:46)
| |
<?
$filename = $_FILES['filename']['name']; //эту строку замени на
$filename = $new_name; //вот эту Не забывай также, что тут необходимо все-таки указать расширение через точку
|
| |
|
|
|
|
|
|
|
для: tvv123456
(21.02.2010 в 13:52)
| | допустим сперва картинка в формате JPG была, я могу её переименовать в PNG, чтобы потом она открывалась?! | |
|
|
|
|
|
|
|
для: frisst
(21.02.2010 в 14:03)
| | попробуйте, у меня получалось | |
|
|
|
|
|
|
|
для: tvv123456
(21.02.2010 в 14:05)
| | спасибо. сейчас попробую... | |
|
|
|
|
|
|
|
для: tvv123456
(21.02.2010 в 14:05)
| | Да! спасибо огромное!!!
работает!
<?php
// заменил
$filename = $_FILES['filename']['name'];
// на
$namefile = "$new_name".".jpg";
$filename = $namefile;
?>
|
| |
|
|
|
|
|
|
|
для: frisst
(21.02.2010 в 14:10)
| | Зачем лишнию переменную создавать($namefile)? Можно новое имя сгенерировать сразу для $filename,
<?
$namefile = "$new_name".".jpg";// Зачем переменную в кавычки брать?
|
| |
|
|
|
|
|
|
|
для: tvv123456
(21.02.2010 в 14:33)
| | а... спасибо...
сглупил... | |
|
|
|
|
автор: BISSON (02.04.2010 в 22:38) |
|
|
для: tvv123456
(21.02.2010 в 14:33)
| | Иногда ПХП на сервере по-странному воспринимает файл. Точно не скажу, но, к примеру:
$a = 1;
$b = 2;
$sum = $a + $b;
if ($sum <= $b) {...} else {...}
Так вот, у меня были траблы, пока не написал вот так:
if ("$sum" <= "$b") {...} else {...} | |
|
|
|
|
|
|
|
для: frisst
(21.02.2010 в 13:46)
| | Не стоит так загружать изображения на сервер. | |
|
|
|
|
|
|
|
для: sim5
(03.04.2010 в 08:31)
| | А как вы посоветуете загружать файлы?
Да... этот скрипт "слабенький"... файлы с размером в 2-3 мегабайта уже не загружает... | |
|
|
|
|
|
|
|
для: frisst
(03.04.2010 в 15:39)
| | Размер загружаемого файла не зависит от скрипта, а от разрешенного в соответствующих параметрах файла php.ini.
Обработку загруженного файла нужно начитать только при отсутствии ошибок при загрузке ($_FILES['filename']['error']), иначе при их наличии все остальные проверки бессмысленные.
$allowed_filetypes = array('.jpg','.JPG','.Jpg','.gif','.GIF','.Gif','.bmp','.BMP','.Bmp','.png','.PNG','.Png') - это слишком круто, существует функция strtolower(), если уж так проверять. Но с такой проверкой я гарантированно засыплю ваш сервер не изображениями, а мусором.
Здесь не однократно описывалась загрузка файлов на сервер, ищите и читайте. | |
|
|
|
|
|
|
|
для: sim5
(03.04.2010 в 15:52)
| | Насколько я знаю, следует создавать изображения, а не перемещать их.
И вот тут то.. gd2 c bmp работать не умеет | |
|
|
|
|
|
|
|
для: neadekvat
(03.04.2010 в 16:37)
| | Перемещать, не перемещать, дело десятое. А вот октрыть bmp файл в GD можно, лишь бы памяти хватило. | |
|
|
|
|
|
|
|
для: sim5
(03.04.2010 в 16:40)
| | Когда пользователь загружает изображение, я не само изображение сохраняю, а создаю его копию. Вот как раз функции, грубо говоря, "создать из bmp" я не нашел, из джипега, джифа - да. | |
|
|
|
|
|
|
|
для: neadekvat
(03.04.2010 в 17:05)
| | Открыть в GD можно любой формат изображения, если знать структуру этого файла. Ну а далее, в цикле, с помощью unpack() получаем цвет каждого пикселя bmp-изображения и копируем его в открытый gd-ресурс. Затем сохраняем ресурс в любом веб-формате. Вот как преобразовать 24- и 32-битные bmp-изображения:
<?
function bmpconvert($filename) {
//читаем заголовок изображения
$bmp = unpack('VbiSize/VbiWidth/VbiHeight/vbiPlanes/vbiBitCount'.
'/VbiCompression/VbiSizeImage', fread($filename,24));
//получаем структуру изображения
$im = fread($filename,$bmp['biSizeImage']);
//создаем ресурс
$res = imagecreatetruecolor($bmp['biWidth'],$bmp['biHeight']);
$off = 0; //смещение на пиксель в структуре
$alph = chr(0);
$Y = $bmp['biHeight']-1;
while ($Y >= 0) {
$X=0;
while ($X < $bmp['biWidth']) {
//получаем цвет пикселя
$color = unpack("V",substr($im,$off,3).$alph);
//устанавливаем пиксель ресурса
imagesetpixel($res,$X,$Y,$color[1]);
$X++;
$off += $bmp['biBitCount'];
}
$Y--;
}
//сохраняем
imagejpeg($res,'filename.ext',compress);
imagedestroy($res);
}
|
| |
|
|
|
|
|
|
|
для: sim5
(03.04.2010 в 18:24)
| | Спасибо за функцию =)
Как же я много еще не знаю | |
|
|
|
|
|
|
|
для: neadekvat
(03.04.2010 в 18:31)
| | Не я автор (первопроходец) этого, есть класс, название которого я точно к сожалению не помню, но есть в нем слово upload. К сожалению в нем не все типы bmp-файла обрабатываются, поэтому источник пришлось править. Это просто корректный кусочек из него. Чистого же исходника уже нет. Ну а сам подход к решению вопроса вполне естественный, но затратный, и при больших размерах исходного изображения... | |
|
|
|
|
|
|
|
для: sim5
(03.04.2010 в 18:47)
| | И тут в моей голове щелкнуло, когда-то я на него набредал. Это? | |
|
|
|
|
|
|
|
для: neadekvat
(03.04.2010 в 19:18)
| | Возможно, трудно сказать. Скачайте, посмотрите. | |
|
|
|
|
|
|
|
для: sim5
(03.04.2010 в 18:47)
| | настолько затратный, что для практического применения лучше раскопать что-то вроде imagemagic и применить его в качестве "моста" форматов. | |
|
|
|
|
|
|
|
для: Trianon
(03.04.2010 в 19:59)
| | При больших размерах ВМР в любом случае кушать много будет.
Можно и вышеприведенным меньше памяти потреблять, если считывать не весь файл, а читать построчно его структуру. А вообще, зачем он нужен этот ВМР... ) | |
|
|
|
|
|
|
|
для: sim5
(03.04.2010 в 20:02)
| | Раньше выдавал ошибку дескать "Изображение имеет недопустимый формат (.bmp)"
Видимо, несмотря на рабочу функцию, лучше не изменять привычкам - дороже обойдется? | |
|
|
|
|
|
|
|
для: neadekvat
(03.04.2010 в 20:35)
| | Кто выдавал? | |
|
|
|
|
|
|
|
для: sim5
(04.04.2010 в 00:09)
| | Я выдавал, при попытке загрузить картинку в формате bmp =) | |
|
|
|
|
|
|
|
для: neadekvat
(04.04.2010 в 01:14)
| | Ясно. Ну а кто будет забрасывать на сервер ВМР? Цифровые мыльницы, так они в JPEG формате пишут. Профессиональные камеры, это RAW, TIFF. Ну может кто-то по не знанию отыщет у себя картинку ВМР формата - нельзя и точка. Превращать сайт в конвертор, так это тогда сервис такой делать, и не только ВМР, иначе зачем это нужно. | |
|
|
|
|
|
|
|
для: sim5
(03.04.2010 в 20:02)
| | >При больших размерах ВМР в любом случае кушать много будет.
Всяко не больше, чем то же изображение в GD...
>Можно и вышеприведенным меньше памяти потреблять, если считывать не весь файл, а читать построчно его структуру.
Построчно это медленно - строки там идут во встречном порядке. А побуферно - вполне себе.
Собственно, нормальные пакетные реализации имено так форматы и преобразуют.
>А вообще, зачем он нужен этот ВМР... )
Это уж кому зачем :)) | |
|
|
|