загрузка изображения на сервер

  • Автор темы Автор темы pervrom1
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

pervrom1

Участник
Топикстартер
Сообщения
37
Реакции
0
Здравствуйте. Я только начиная разбираться в вёрстке и мне нужен совет. Буду очень благодарен за помощь.
На своей web-страничке я создал форму для загрузки фотографии посетителя на сервер. Эта форма с атрибутами:
enctype="multipart/form-data" action="scripts.php" method="POST".

В script.php такой код:
$put1 = '/name_catalog/foto.jpg'; // путь к постоянному каталогу.
$put2 = $_FILES['pic']['tmp_name']; // путь к временному каталогу.
move_uploaded_file($put2, $put1) // перенос и сохранение изображения.

После клика по кнопке формы - submit, фотография сохраняется на сервер в указанный каталог, но затем она не открывается ни в одной программе для просмотра изображений, при каждой такой попытке пишет: "Просмотр недоступен". Я загружал фотографию с расширением .jpg, поэтому и в переменной $put1 указал foto.jpg. Наверное я что-то упустил и так как подсказать некому, теперь просто в растерянности )) Для соединения с сервером использую Total Commander. Очень часто через него копирую фотографии со своего компьютера на сервер и наоборот. Всегда всё было нормально, всё открывалось. Проблемы только когда загружаю через форму. Ну вот, наверное смешно читать такой дилетантский вопрос )) Буду счастлив получить совет. Спасибо.
 
Ответ: загрузка изображения на сервер

Делаем форму с <input name="pictName" type="file">
В скрипте-обработчике пишем
Код:
if ($_FILES["pictName"]["name"]!="") {
  if(copy($_FILES["pictName"]["tmp_name"],"".$directoryName."".$_FILES["pictName"]["name"]))
   {
	   $pictName = $_FILES["pictName"]["name"];
   };
};
в результате в переменной $pictName будет имя загруженного файла при условии что он 1.Загрузился, 2.Переписался из временной директории в заданную в переменной $directoryName. Сам файл загрузится во временную директорию, потом перепишется в заданную в переменной $directoryName. Временную директорию для загрузки задавать явно нет необходимости.

Еще не забудьте проверку на тип файла, чтоб только ЖПГ к примеру можно было загрузить. И отключите выполнение php-сценариев в директории, куда сгружаете файл.
 
Ответ: загрузка изображения на сервер

Спасибо, Mallard. Сейчас попробую осмыслить и сделать так как вы сказали )) Если всё получится, то вы просто мой спаситель ))
 
Ответ: загрузка изображения на сервер

Mallard, всё точь в точь сделал как вы сказали. Но, видимо, руки у меня не с того места растут. Результат получился тот же - фотография загружается, с тем же именем, с тем же расширением, но по-прежнему не открывается ни в одном графическом редакторе. Ещё вы сказали отключить выполнение php-сценариев в директории, куда сгружается файл. Но я очень смутно себя представляю как это делается. Можно ли это сделать с помощью ftp-клиента, или как-то иначе? Я перепробовал сгружать файл во все возможные папки, предоставленные мне хостинговой компанией, в надежде, что хоть одна из них попадётся с выключенным режимом выполнения php-сценариев, но всё так же безрезультатно )) Если честно, я уже просто замучился )) Может ли при передачи файла сбиться кодировка изображения или что-то в этом роде, как если, предположим, открыть рисунок через текстовый редактор "Блокнот" и сохранить его в этой незнакомом формате? Мне неловко за эти глупые вопросы, но ничего умнее я уже не в состоянии придумать))
 
Ответ: загрузка изображения на сервер

Ещё вы сказали отключить выполнение php-сценариев в директории, куда сгружается файл. Можно ли это сделать с помощью ftp-клиента, или как-то иначе?
Это на загрузку файла не влияет, просто это защита. А то вместо картинки сгрузят вам программу нехорошую ;-) Делается с помощью ФТП клиента конечно же - где права на директорию сервера задаются.
Загрузите какую-нибудь картинку и выложите ссылку на файл. Должно быть что-то типа www.вашсайт.ru/директориякудазагружаем/мойфайл.jpg
Да, имя файла не по-русски случайно? Размер загруженного файла в директории веб-сервера совпадает с размером загружаемого?
 
Ответ: загрузка изображения на сервер

Ещё вы сказали отключить выполнение php-сценариев в директории, куда сгружается файл. Можно ли это сделать с помощью ftp-клиента, или как-то иначе?
Это на загрузку файла не влияет, просто это защита. А то вместо картинки сгрузят вам программу нехорошую ;-) Делается с помощью ФТП клиента конечно же - где права на директорию сервера задаются.
Загрузите какую-нибудь картинку и выложите ссылку на файл. Должно быть что-то типа www.вашсайт.ru/директориякудазагружаем/мойфайл.jpg
Да, имя файла не по-русски случайно? Размер загруженного файла в директории веб-сервера совпадает с размером загружаемого?
 
Ответ: загрузка изображения на сервер

Да, размер файла (5,08 KB), имя и расширение полностью совпадают. Имя также на латинице.
Путь - http://evangelie.hut2.ru/vrednoe_foto.jpg
Ещё я вспомнил, что в ftp-клиенте можно поменять атрибуты файла, может это чем-то поможет? )
Mallard, спасибо за помощь.
 
Ответ: загрузка изображения на сервер

А-а-а! Вот что попробуйте! В файле htaccess надо прописать строчку CharsetDisable On. На вашем хостинге используется перекодировка на лету, она и портит картинки. Строка в htaccess отключит перекодировку. См форум техподдержки вашего хостера http://forum.holm.ru/index.php?showtopic=251
 
Ответ: загрузка изображения на сервер

Mallard, вы просто не представляете моё счастье - я прыгаю от радости! Всё получилось! Это какую голову надо иметь, чтобы вникнуть во все подробности, всё запомнить! Боюсь для меня это сверх силы )) Теперь попробую код составить на JavaScript для проверки формы. Также учту ваше замечание отключить выполнение php-сценариев в директории, куда сгружается файл. Крепко пожимаю вашу руку. С Наступающим...!!! ))
 
Статус
Закрыто для дальнейших ответов.