Доброго времени суток. Несколько дней я работаю над загрузкой фалов, раньше у меня сё работало, но когда стал всё "переносить" - скрипт почему-то отказался работать... У меня обычная загрузка фоток, не считая всякой всячины, которая делается между загрузкой и сохранением. Я убрал всё лишнее, оставив только загрузку и сохранение фото - ничего лишнего. При выводе массива $_FILE через var_dump или print_r, получаю следующие результаты: Код (Text): Array ( [picture] => Array ( [name] => Скрин паспорта.jpg [type] => image/jpeg [tmp_name] => W:\userdata\temp\phpD95D.tmp [error] => 0 [size] => 151974 ) ) , где "Скрин паспорта.jpg" - это изначальное имя загружаемой фотографии, а W:\userdata\temp\phpD95D.tmp - я так понимаю - это это локальное, временное местонахождения фала. [error] - он правильно показывает эту ошибку, так как этого файла попусту не существует, если, к примеру, руками набрать в проводнике. P.S. Я использую OpenServer в качестве локальной сборки, может быть в нём проблемы? P.P.S. Подскажите вероятное решение данной проблемы, с чем она может быть связана? Заранее спасибо. Добавлено спустя 35 минут 19 секунд: Код (Text): /*РАЗДЕЛ ОБРАБОТКИ ИЗОБРАЖЕНИЯ*/ //рандомное имя файлу function generatePassword($length = 8){ $chars = 'qwertyuiopasdfghjklzxcvbnm2345678923456789'; $numChars = strlen($chars); $string = ''; for ($i = 0; $i < $length; $i++) { $string .= substr($chars, rand(1, $numChars) - 1, 1); } return $string; } $namefolder = date("dFY"); print_r($_FILES); mkdir("thumbs/$namefolder", 0777); // Пути загрузки файлов $path = "thumbs/$namefolder/"; $pathGlobal ="thumbs/"; $tmp_path = 'static/temp/'; // Массив допустимых значений типа файла $types = array('image/gif', 'image/png', 'image/jpeg'); // Максимальный размер файла $size = 5242880; // Обработка запроса //Проверяем тип файла //if (!in_array($_FILES['picture']['type'], $types)) //die('<p>Запрещённый тип файла. <a href="?">Попробовать другой файл?</a></p>'); // Проверяем размер файла if ($_FILES['picture']['size'] > $size) die('<p>Слишком большой размер файла. <a href="?">Попробовать другой файл?</a></p>'); // Функция изменения размера // Изменяет размер изображения в зависимости от type: // type = 1 - эскиз // type = 2 - большое изображение // quality - качество изображения (по умолчанию 75%) function resize($file, $type = 1, $quality = null) { global $tmp_path; // Ограничение по ширине в пикселях $max_size = 240; $hmax_size = 180; // Качество изображения по умолчанию if ($quality == null) $quality = 100; // Cоздаём исходное изображение на основе исходного файла if ($file['type'] == 'image/jpeg') $source = imagecreatefromjpeg($file['tmp_name']); elseif ($file['type'] == 'image/png') $source = imagecreatefrompng($file['tmp_name']); elseif ($file['type'] == 'image/gif') $source = imagecreatefromgif($file['tmp_name']); else return false; $src = $source; // Определяем ширину и высоту изображения $w_src = imagesx($src); $h_src = imagesy($src); // В зависимости от типа (эскиз или большое изображение) устанавливаем ограничение по ширине. $w = $max_size; $h = $hmax_size; // Если ширина больше заданной if ($w_src > $w or $h_src > $h) { // Вычисление пропорций $ratio = $w_src/$w; $ratio = $h_src/$h; $w_dest = round($w_src/$ratio); $h_dest = round($h_src/$ratio); // Создаём пустую картинку $dest = imagecreatetruecolor($w_dest, $h_dest); // Копируем старое изображение в новое с изменением параметров imagecopyresampled($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src); // Вывод картинки и очистка памяти imagejpeg($dest, $tmp_path . $file['name'], $quality); imagedestroy($dest); imagedestroy($src); return $file['name']; }else { // Вывод картинки и очистка памяти imagejpeg($src, $tmp_path . $file['name'], $quality); imagedestroy($src); return $file['name']; } } $name = resize($_FILES['picture']); echo "Переменная name = $name"; /* Загрузка файла и вывод сообщения if (!@copy($tmp_path . $name, $path . $name)) echo '<p>Что-то пошло не так.</p>'; else*/ // Переименовываем полученный файл $newName = "a_" . generatePassword(5) . "_". generatePassword(4) . ".jpg"; echo "Переменная newName = $newName"; rename ("thumbs/$namefolder/$name", "thumbs/$namefolder/$newName"); $thumbs = "$namefolder/\$newName"; echo "$thumbs"; // Удаляем временный файл unlink($tmp_path . $name); /*КОНЕЦ ОБРАБОТКИ ИЗОБРАЖЕНИЯ*/
Re: Ошибка при сохранении файлов на сервер. Нужна ваша помощ ну показывай код которым сохраняешь, файл во временную папку у тебя загрузился
Re: Ошибка при сохранении файлов на сервер. Нужна ваша помощ Код (Text): <div class="f_imulation_wrap"> <input type="file" name="picture" class="thumbs_input"/> </div> - это вот, собственно сама форма Добавлено спустя 1 минуту 25 секунд: Re: Ошибка при сохранении файлов на сервер. Нужна ваша помощь! Где он загрузился-то? - он вроде бы сюда должен быть: "W:\userdata\temp\phpD95D.tmp"? Объясните пожалуйста, а то я чего-то понять не могу)
Re: Ошибка при сохранении файлов на сервер. Нужна ваша помощ [error] => 0 - вот тут он загрузился.... код выше, это и есть *Я убрал всё лишнее, оставив только загрузку и сохранение фото - ничего лишнего.* ???
Re: Ошибка при сохранении файлов на сервер. Нужна ваша помощ После загрузки файла, PHP-скрипт должен его куда-то скопировать, где уже этот файл будет храниться на сайте. А из папки temp он сразу же удаляется. Т.е. ты отправил файл на сервер, сервер его принял, и дальше уже скрипт должен его проверить и принять решение, что же делать с этим файлом. Если ничего с ним не делать - то он удалится сразу же после того, как был создан. php.net/manual/ru/features.file-upload.php
Re: Ошибка при сохранении файлов на сервер. Нужна ваша помощ Вот теперь я точно всё убрал и ничего не мешает в коде... Прочитал я тот мануал, из него взял код и вот что получилось: Код (Text): /*РАЗДЕЛ ОБРАБОТКИ ИЗОБРАЖЕНИЯ*/ // Пути загрузки файлов $uploaddir = "thumbs/"; $uploadfile = $uploaddir . basename($_FILES['picture']['name']); echo '<pre>'; if (move_uploaded_file($_FILES['picture']['tmp_name'],$uploadfile)){ echo "Файл корректен и был успешно загружен.\n"; }else{ echo "Какая-то непонятная ошибка, сука!\n"; } echo 'Некоторая отладочная информация:</br>'; var_dump($_FILES); print "</pre>"; echo "Переменная uploaddir = $uploaddir \n</br>"; echo "Переменная uploadfile = $uploadfile \n</br>"; /*КОНЕЦ ОБРАБОТКИ ИЗОБРАЖЕНИЯ*/ В браузере он мне выводит следующее: Код (Text): <pre>Файл корректен и был успешно загружен. Некоторая отладочная информация:</br>array(1) { ["picture"]=> array(5) { ["name"]=> string(14) "x_9f2a00b0.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(28) "W:\userdata\temp\php36CF.tmp" ["error"]=> int(0) ["size"]=> int(144074) } } </pre>Переменная uploaddir = thumbs/ </br>Переменная uploadfile = thumbs/x_9f2a00b0.jpg