Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вместо .jpg пишет .jpeg
Форумы портала PHP.SU » » Вопросы новичков » Вместо .jpg пишет .jpeg

Страниц (1): [1]
 

1. DonQuijote - 07 Сентября, 2015 - 21:02:23 - перейти к сообщению
Здравствуйте!
Нашёл нужный код на Харахабр, но не могу понять почему изображения .jpg сохраняет с расширением .jpeg
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if ($_POST["submit_btn"]){
  4.   //Проверка, действительно ли загруженный файл является изображением
  5.   $imageinfo = getimagesize($_FILES["myfile"]["tmp_name"]);
  6.   if($imageinfo["mime"] != "image/gif" && $imageinfo['mime'] != "image/jpeg" && $imageinfo["mime"] !="image/png") {
  7.   print '<p id="upload_error">Загруженный файл не является изображением</p>';die;
  8.   }
  9.  
  10.   //Сохранение загруженного изображения с расширением, которое возвращает функция getimagesize()
  11.   //Расширение изображения
  12.   $mime=explode("/",$imageinfo["mime"]);
  13.   //Имя файла
  14.   $namefile=explode(".",$_FILES["myfile"]["name"]);
  15.   //Полный путь к директории
  16.   $uploaddir = '../'.$_POST['to_folder'].'/';
  17.   //Функция, перемещает файл из временной, в указанную вами папку
  18.   if (move_uploaded_file($_FILES["myfile"]["tmp_name"], $uploaddir.$namefile[0].".".$mime[1])) {
  19.     print '<p id="upload_ok">Изображение успешно загружено</p>';
  20.   }else{
  21.     print '<p id="upload_error">Произошла ошибка</p>';
  22.   }
  23. }
  24.  
  25. else
  26. {
  27. ?>
  28.         <form action="" method="POST" enctype="multipart/form-data">
  29.         Выбрать файл: <input type="file" name="myfile"/><br/>
  30.         Выбрать папку: <select name="to_folder" size="2">
  31.                 <option value="img/news">папка NEWS</option>
  32.                 <option value="portfolio/preview">подпапка Preview</option>
  33.         </select>        <input type="submit" name="submit_btn" value="Загрузить"/>
  34.         </form>
  35. <?PHP
  36. }
  37. ?>
2. Viper - 07 Сентября, 2015 - 21:40:13 - перейти к сообщению
$mime[1] это и есть расширение файла взятое из mime-типа файла, а оно image/jpeg
3. DonQuijote - 07 Сентября, 2015 - 21:47:14 - перейти к сообщению
Viper пишет:
$mime[1] это и есть расширение файла взятое из mime-типа файла, а оно image/jpeg


Так если image/jpeg заменить на image/jpg, то ошибку выдает (что это не картинка) и не загружает
4. Ts.Saltan - 07 Сентября, 2015 - 22:07:58 - перейти к сообщению
DonQuijote пишет:
image/jpg

такого типа файла не существует
есть image/jpeg
и расширение файлов - .jpeg

предположу, что расширение jpg используют, чтоб вложиться в 3 символа (как было в DOS, и вряд ли это для совместимости, скорее ради эстетичности)

по аналогии - .html и .htm файлы имеют mimetype - text/html
5. DonQuijote - 07 Сентября, 2015 - 22:09:27 - перейти к сообщению
Ts.Saltan пишет:
DonQuijote пишет:
image/jpg

такого типа файла не существует
есть image/jpeg
и расширение файлов - .jpeg

предположу, что jpg используют, чтоб вложиться в 3 символа (как было в DOS, и вряд ли это для совместимости, скорее для эстетичности). По аналогии - .html и .htm файлы имеют mimetype - text/html


А как сделать чтобы загружал на сайт в формате jpg?
6. Viper - 07 Сентября, 2015 - 23:03:17 - перейти к сообщению
http://www[dot]differencebetween[dot]inf[dot][dot][dot]een-jpg-and-jpeg

DonQuijote пишет:
Так если image/jpeg заменить на image/jpg, то ошибку выдает (что это не картинка) и не загружает
вы совсем не поняли что нужно сделать.
Делайте замену для этого. Т.е.

CODE (php):
скопировать код в буфер обмена
  1. if ($mime[1] == 'jpeg') {
  2.         $mime[1] = 'jpg';
  3. }

Так понятней?
7. armancho7777777 - 08 Сентября, 2015 - 09:01:50 - перейти к сообщению
Удалить:
PHP:
скопировать код в буфер обмена
  1. $mime=explode("/",$imageinfo["mime"]);
  2. $namefile=explode(".",$_FILES["myfile"]["name"]);

Заменить:
PHP:
скопировать код в буфер обмена
  1. $uploaddir.$namefile[0].".".$mime[1]

на:
PHP:
скопировать код в буфер обмена
  1. $uploaddir.$_FILES["myfile"]["name"]

(Добавление)
А вообще говнокодище то ещё.
Вопрос на засыпку:
что будет, если в getimagesize попадёт файл, не являющийся изображением ?
8. Viper - 08 Сентября, 2015 - 10:37:25 - перейти к сообщению

armancho7777777 пишет:
А вообще говнокодище то ещё.
DonQuijote пишет:
код на Харахабр

Как бы намекает ;)
9. DonQuijote - 08 Сентября, 2015 - 20:10:33 - перейти к сообщению
Спасибо armancho7777777 помогло

 

Powered by ExBB FM 1.0 RC1