|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » upload .PNG on the server |
|
|
upload .PNG on the server
|
![]() Рыжая Сообщения: 1550 |
скрипт на PHP.
загружает файлы на сервер. код: elseif ( ($_FILES['userfile']['type'][$i] !== 'image/png') && ($_FILES['userfile']['type'][$i] !== 'image/bmp') && ($_FILES['userfile']['type'][$i] !== 'image/gif') && ($_FILES['userfile']['type'][$i] !== 'image/jpeg') && ($_FILES['userfile']['type'][$i] !== 'image/pjpeg') && ($_FILES['userfile']['type'][$i] !== 'text/plain') && ($_FILES['userfile']['type'][$i] !== 'application/x-rar-compressed') && ($_FILES['userfile']['type'][$i] !== 'application/x-zip-compressed') && ($_FILES['userfile']['type'][$i] !== 'application/zip') ) { $con=$con+$i; $msg .= '<p>'.$con.' - Tip fajla ne razreshion</p>';} при чём из университета я могла залить, а из библиотеки нет |
|
------- Отправлено: 17:50, 22-03-2005 |
![]() Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать А разве здесь не "!=" вместо "!==" писать надо??? Вроде в $_FILES['userfile']['type'] содержится как раз текст типа image/jpeg, то есть проверку надо производит с помощью знака "не равно", а не "не идентично", хотя вообщем то это наверно всё равно, в любом случае везде только строки, то есть переменная и строка одного типа, то есть остаётся только равно или не равно проверить......
Хотя если Цитата:
Или универ и библиотека имеется в виду два сервера-и на каждом данный код лежит?? |
|
------- Отправлено: 19:24, 22-03-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать Дело в том, что type означивается не сервером, но бродилкой в которой был означен диалог отправки файла. Т.о. это задача броузера. Вот тут и могут быть такого рода заморочки - с одного аплоадится, а с другого - нет. Рекомендую перейти на серверное определение типа файла: string mime_content_type (string filename).
P.S. Да, и применять эту функцию нужно к временному файлу - $_FILES['userfile']['tmpname'][$i]. А то другая информация - фикция. |
------- Отправлено: 08:59, 23-03-2005 | #3 |
![]() Рыжая Сообщения: 1550
|
Профиль | Сайт | Отправить PM | Цитировать vadimiron
в данном случае "!==" придает больше уверености мне ![]() и это совершенно не влияет на работу скрипта. потому как все остальные типы указанные в скрипте определяются корректно. Prisoner это именно то, что я сама подумала ![]() и про браузеры и про функцию mime_content_type спасибо, что просвятил |
------- Отправлено: 19:05, 23-03-2005 | #4 |
![]() Рыжая Сообщения: 1550
|
Профиль | Сайт | Отправить PM | Цитировать Prisoner
неудача. сервер не сконфигурирован использовать mime_content_type на локалке я попыталась его установить, но оказалось, что он вобще кроме gif ничего не распознаёт... как проблему решить-то? |
|
------- Отправлено: 17:19, 03-04-2005 | #5 |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать Странно. Это стандартное расширение. Там заморочки с нахождением magic.mime. Можно финт ушами: есть переменная $http_response_header которая означивается после операции fopen и которую можно разобрать:
function GetHeaders($URL) { $Headers = array(); $F = @fopen ($URL, 'r'); @fclose($F); $Headers['Error'] = array(); //var_dump($http_response_header); foreach($http_response_header as $HItem) { if (strpos($HItem, 'Content-Length: ') !== false) $Headers['Content-Length'] = substr($HItem, 16); if (strpos($HItem, 'Not Found') !== false) $Headers['Error']['404'] = 'Объект не найден. Ложная ссылка. (Ошибка #404)'; if (strpos($HItem, 'Date: ') !== false) $Headers['Date'] = substr($HItem, 6); if (strpos($HItem, 'Server: ') !== false) $Headers['Server'] = substr($HItem, 8); if (strpos($HItem, 'Content-Type: ') !== false) $Headers['Mime'] = substr($HItem, 14); } if (!isset($Headers['Mime'])) $Headers['Mime'] = ''; else { if (!preg_match('/([\w]+\/[\w]+)/i', $Headers['Mime'], $Match)) $Headers['Mime'] = @mime_content_type($URL); else $Headers['Mime'] = $Match[1]; } return $Headers; } ![]() |
------- Отправлено: 07:35, 04-04-2005 | #6 |
![]() Рыжая Сообщения: 1550
|
Профиль | Сайт | Отправить PM | Цитировать Prisoner
да дело в том, что на сервере mime_content_type не работает. скорее всего там не сконфигурирован php.ini кстати, я создала текстовый документ, непечатала тем пару строк переименовала в pic.png и ($_FILES['userfile']['type'][$i] !== 'image/png') нормально его опознал. а реальнуй рисунок не хочет... может png надо как-то по другому опознавать? |
------- Отправлено: 15:24, 04-04-2005 | #7 |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать В функции вызов mime_content_type - это страховка. Основной упор сделан на разбор заголовочной информации. И вот если после разбора этой инфы по типу ничего нет, то вызывается страховка. Попробуй, вдруг заработает? Может быть при открытии файлв его тип определяется иначе, не как функцией mime_content_type (хоть и маловероятно). В любом случае можно только посоветовать пнуть серверодержателя - хостера или кто там у вас в универе... это самое верное решение, остальное - финты ушами.
|
------- Отправлено: 18:01, 04-04-2005 | #8 |
![]() Рыжая Сообщения: 1550
|
Профиль | Сайт | Отправить PM | Цитировать Prisoner
sorry, я невнимательно посмотрела код... мне тут вобщем нужно только пару строк: function GetHeaders($URL) { $Headers = array(); $F = @fopen ($URL, 'r'); @fclose($F); $Headers['Error'] = array(); //var_dump($http_response_header); - не понимаю предназначаение этой строки foreach($http_response_header as $HItem) { if (strpos($HItem, 'Content-Type: ') !== false) $Headers['Mime'] = substr($HItem, 14); } if (!isset($Headers['Mime'])) $Headers['Mime'] = ''; else { if (!preg_match('/([\w]+\/[\w]+)/i', $Headers['Mime'], $Match)) $Headers['Mime'] = @mime_content_type($URL); - это строка тоже врядли нужна, если эта функция всё рано отключена else $Headers['Mime'] = $Match[1]; } return $Headers; } |
------- Отправлено: 21:06, 04-04-2005 | #9 |
![]() Рыжая Сообщения: 1550
|
Профиль | Сайт | Отправить PM | Цитировать Prisoner
ладно.. попрошу что б включили функцию... |
------- Отправлено: 21:07, 04-04-2005 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Подскажите upload | sanchis | Вебмастеру | 2 | 04-01-2010 10:13 | |
Proxy/NAT - помогите с NATом <upload - оптика, download - тарелка> | Rasssel | Сетевые технологии | 10 | 29-10-2007 22:24 | |
Папка upload в LAN | naum7 | Сетевые технологии | 3 | 13-12-2005 17:16 | |
Upload файлов (Perl CGI) | Diesel | Вебмастеру | 2 | 25-02-2004 18:17 | |
Upload файлов в PHP | prosto vlad | Вебмастеру | 2 | 20-11-2003 06:59 |
|