[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с загрузкой изображений на сервер.
sofmes
В общем, я хочу сделать загрузку изображений на хостинг. Нашел в какой-то документации данный код, но он отказывается работать. Если я использую Denwer, то при загрузке изображений с расширением png, он пишет, что файл успешно загружен. Если же я делаю это на хостинге, то получаю: “Ошибка: перемещение файла не удалось.” Но ни в том, не в другом случае изображение не загружается…

<center><?
$max_image_width = 380;
$max_image_height = 600;
$max_image_size = 64 * 1024;
$valid_types = array("png");

if (isset($_FILES["userfile"])) {
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
$filename = $_FILES['userfile']['tmp_name'];
$ext = substr($_FILES['userfile']['name'],
1 + strrpos($_FILES['userfile']['name'], "."));
if (filesize($filename) > $max_image_size) {
echo 'Ошибка: Размер файла> 64К.';
} elseif (!in_array($ext, $valid_types)) {
echo 'Ошибка: Неправильный тип файла.';
} else {
$size = GetImageSize($filename);
if (($size) && ($size[0] < $max_image_width)
&& (
$size[1] < $max_image_height)) {
if (@move_uploaded_file($filename, "/skinsik/")) {
echo 'Файл успешно загружен.';
} else {
echo 'Ошибка: перемещение файла не удалось.';
}
}
else {
echo 'Ошибка: неверное свойство изображения.';
}
}
}
else {
echo "Ошибка: пустой файл.";
}
}
else {
echo '
<form enctype="multipart/form-data" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="64000">
Выбрать файл: <input name="userfile" type="file">
<input type="submit" value="Отправить файл">
</form>'
;
}
?></center>




Спустя 1 час, 4 минуты, 37 секунд (24.08.2011 - 18:46) sebastjan написал(а):
воспользуйся поиском, не раз уже было , там и готовые решения с загрузкой и ресайзом.

Спустя 2 часа, 47 минут, 48 секунд (24.08.2011 - 21:34) sofmes написал(а):
Не нашел я ничего лучше этого... На форуме есть, но там куски, а склеить цельную картину не выходит. sad.gif

Спустя 1 минута, 55 секунд (24.08.2011 - 21:35) inpost написал(а):
sofmes
Выстави права на папку 777, ну а потом почитай про это внимательнее smile.gif

Спустя 17 минут, 58 секунд (24.08.2011 - 21:53) ИНСИ написал(а):
Цитата
if (@move_uploaded_file($filename, "/skinsik/")) {

Попробуй путь указать не от корня, а от загрузчика. Проблема скорее всего в этом.

Спустя 5 минут, 17 секунд (24.08.2011 - 21:59) neadekvat написал(а):
Цитата (INSIDIOUS @ 24.08.2011 - 22:53)
Попробуй путь указать не от корня, а от загрузчика. Проблема скорее всего в этом.

Что-то новенькое. Обычно проблемы возникают из-за относительных путей и решаются примением пути от корня.

Спустя 11 минут, 41 секунда (24.08.2011 - 22:10) sofmes написал(а):
Права 777. Изменение путей успеха не принесло.

Спустя 35 минут, 3 секунды (24.08.2011 - 22:45) ИНСИ написал(а):
neadekvat у меня как-то было такое, что от коня не работало. Видать настройки хостера были такие... Предположил что у ТС тоже самое.

sofmes попробуй так:
$maxWidth	= 380;
$maxHeight = 600;
$uploadName = 'userfile'; // имя поля в форме
$path = '/skinsik/'; // указываем папку, в которую надо загрузить
$maxSizeFile = 64 * 1024; // выставляем максимальный размер файла
$arrTypeFile = array('png'); // создаем массив с разрешенными форматами

if(!empty($_FILES[$uploadName]['tmp_name'])) { // если поле файла не пусто, то загружаем

$size = getimagesize($_FILES[$uploadName]['tmp_name']);
$ext = strtolower(str_replace('.', '', strrchr($_FILES[$uploadName]['name'],'.'))); // узнам тип файла

if($maxSizeFile > $_FILES[$uploadName]['size']) { // проверям размер
echo 'Ошибка: Размер файла> 64К';
} else if(!in_array(strtolower($ext),$arrTypeFile)) { // проверяем разрешен ли формат загружаемого файла
echo 'Ошибка: Неправильный тип файла.';
} else if($size[0] > $maxWidth && $size[1] > $maxHeight) {
echo 'Ошибка: неверное свойство изображения.';
} else {
$newFile = $path . uniqid() . '.' . $ext; // создаем новый файл, путь + новое имя

if(move_uploaded_file($_FILES[$uploadName]['tmp_name'],$newFile)) {
echo 'OK';
} else {
echo 'Произошла ошибка при загрузке файла на сервер!';
}
}
}

Вообще, move_uploaded_file уже давно содержит в себе: is_uploaded_file. К тому же is_uploaded_file уже устарела и не везде может работать

Спустя 8 часов, 48 минут, 18 секунд (25.08.2011 - 07:34) sofmes написал(а):
Спасибо, но теперь при нажатии "Загрузить" появляется белый экран...

Спустя 11 минут, 56 секунд (25.08.2011 - 07:46) linker написал(а):
neadekvat
Корень у хостера может быть и корнем домашней папки и корнем файловой системы, не надо путать корень с $_SERVER['DOCUMENT_ROOT'], это абсолютно разные вещи.

Спустя 2 минуты, 2 секунды (25.08.2011 - 07:48) linker написал(а):
sofmes
Добавить в начало скрипта
ini_set('display_errors', 1);
error_reporting(E_ALL);

Спустя 2 часа, 11 минут, 54 секунды (25.08.2011 - 10:00) sofmes написал(а):
Я запутался окончательно. :( Теперь у меня два файла html и php.

upload.html
<html>
<body>
<FORM

ENCTYPE="multipart/form-data" ACTION="myup.php"
METHOD=POST>
Выберете файл: <INPUT NAME="myfile"
TYPE="file">
<INPUT
TYPE="submit"
VALUE="Загрузить">
</FORM>
</body>
</html>


myup.php
<?php
$maxWidth = 380;
$maxHeight = 600;
$uploadName = 'userfile'; // имя поля в форме
$path = '/skinsik/'; // указываем папку, в которую надо загрузить
$maxSizeFile = 64 * 1024; // выставляем максимальный размер файла
$arrTypeFile = array('png'); // создаем массив с разрешенными форматами

if(!empty($_FILES[$uploadName]['tmp_name'])) { // если поле файла не пусто, то загружаем
ini_set('display_errors', 1);
error_reporting(E_ALL);
$size = getimagesize($_FILES[$uploadName]['tmp_name']);
$ext = strtolower(str_replace('.', '', strrchr($_FILES[$uploadName]['name'],'.'))); // узнам тип файла

if($maxSizeFile > $_FILES[$uploadName]['size']) { // проверям размер
echo 'Ошибка: Размер файла> 64К';
} else if(!in_array(strtolower($ext),$arrTypeFile)) { // проверяем разрешен ли формат загружаемого файла
echo 'Ошибка: Неправильный тип файла.';
} else if($size[0] > $maxWidth && $size[1] > $maxHeight) {
echo 'Ошибка: неверное свойство изображения.';
} else {
$newFile = $path . uniqid() . '.' . $ext; // создаем новый файл, путь + новое имя

if(move_uploaded_file($_FILES[$uploadName]['tmp_name'],$newFile)) {
echo 'OK';
} else {
echo 'Произошла ошибка при загрузке файла на сервер!';
}
}
}

?>

Вот, а добавление строк кода успеха не принесло.

Спустя 9 минут, 57 секунд (25.08.2011 - 10:10) linker написал(а):
Ёпт, пути, пути, пути, это $path = '/skinsik/'; лажа, я на 100% уверен что в корне на хостинге такого пути не существует.

Спустя 1 час, 45 минут, 14 секунд (25.08.2011 - 11:55) sofmes написал(а):
Папка находится: localhost\www\123\skinsik\
myup.php и upload.html лежат в папке 123.

Спустя 9 минут, 11 секунд (25.08.2011 - 12:04) linker написал(а):
/ - означает от корня либо диска, либо твоей домашней папки (зависит от настроек хостера). В твоём случае путь будет $path = './skinsik/';

Спустя 1 минута, 19 секунд (25.08.2011 - 12:05) ИНСИ написал(а):
И замени вот это:

$uploadName = 'myfile';

Спустя 9 минут, 37 секунд (25.08.2011 - 12:15) sofmes написал(а):
Только у меня всеравно белый экран, туда ли я вписал строки?
ini_set('display_errors', 1);
error_reporting(E_ALL);


Вроде бы работает, спасибо.

Спустя 4 часа, 43 минуты, 5 секунд (25.08.2011 - 16:58) Skesh написал(а):
Всеже я тоже думаю что проблема с правами доступа, попробуй поставить 777 на корень сайта и на все вложеные папки и файлы тоже, так в целях експеремента.

Спустя 3 часа, 4 минуты, 11 секунд (25.08.2011 - 20:02) sofmes написал(а):
Так работает все, еще раз спасибо! Прова и так 777.

Спустя 19 часов, 12 минут, 33 секунды (26.08.2011 - 15:15) Skesh написал(а):
А виноват, не дочитал =)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.