Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » upload .PNG on the server

Ответить
Настройки темы
upload .PNG on the server

Аватара для Ginger

Рыжая


Сообщения: 1550
Благодарности: 19

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Ginger
Дата: 03-04-2005
скрипт на 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>';}
не даёт залить PNG.
при чём из университета я могла залить, а из библиотеки нет

-------
ХР, 2000, NT - BSOD (синие экраны смерти) русский перевод


Отправлено: 17:50, 22-03-2005

 

Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


А разве здесь не "!=" вместо "!==" писать надо??? Вроде в $_FILES['userfile']['type'] содержится как раз текст типа image/jpeg, то есть проверку надо производит с помощью знака "не равно", а не "не идентично", хотя вообщем то это наверно всё равно, в любом случае везде только строки, то есть переменная и строка одного типа, то есть остаётся только равно или не равно проверить......


Хотя если
Цитата:
pri chiom s univera ja spokojno zalivala. a iz biblioteki ne mogu
то дело не в коде, а в компьютерах, то есть с одного из двух разных компьютеров не получается загрузить
Или универ и библиотека имеется в виду два сервера-и на каждом данный код лежит??

-------
Fortes fortuna adiuvat


Отправлено: 19:24, 22-03-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Дело в том, что type означивается не сервером, но бродилкой в которой был означен диалог отправки файла. Т.о. это задача броузера. Вот тут и могут быть такого рода заморочки - с одного аплоадится, а с другого - нет. Рекомендую перейти на серверное определение типа файла: string mime_content_type (string filename).
P.S. Да, и применять эту функцию нужно к временному файлу - $_FILES['userfile']['tmpname'][$i]. А то другая информация - фикция.

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 08:59, 23-03-2005 | #3


Аватара для Ginger

Рыжая


Сообщения: 1550
Благодарности: 19

Профиль | Сайт | Отправить PM | Цитировать


vadimiron
в данном случае "!==" придает больше уверености мне
и это совершенно не влияет на работу скрипта. потому как все остальные типы указанные в скрипте определяются корректно.

Prisoner
это именно то, что я сама подумала
и про браузеры и про функцию mime_content_type
спасибо, что просвятил

-------
ХР, 2000, NT - BSOD (синие экраны смерти) русский перевод


Отправлено: 19:05, 23-03-2005 | #4


Аватара для Ginger

Рыжая


Сообщения: 1550
Благодарности: 19

Профиль | Сайт | Отправить PM | Цитировать


Prisoner
неудача.
сервер не сконфигурирован использовать mime_content_type
на локалке я попыталась его установить,
но оказалось, что он вобще кроме gif ничего не распознаёт...

как проблему решить-то?

-------
ХР, 2000, NT - BSOD (синие экраны смерти) русский перевод


Отправлено: 17:19, 03-04-2005 | #5


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить 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;
       }
Делалось когда-то для url'ов, но думаю, сойдет и тут. А тут интересные грабли с mime_content_type. Может она заработает, с ней как-то приятнее дело иметь .

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 07:35, 04-04-2005 | #6


Аватара для Ginger

Рыжая


Сообщения: 1550
Благодарности: 19

Профиль | Сайт | Отправить PM | Цитировать


Prisoner
да дело в том, что на сервере mime_content_type не работает.
скорее всего там не сконфигурирован php.ini

кстати, я создала текстовый документ, непечатала тем пару строк
переименовала в pic.png и ($_FILES['userfile']['type'][$i] !== 'image/png') нормально его опознал.
а реальнуй рисунок не хочет...
может png надо как-то по другому опознавать?

-------
ХР, 2000, NT - BSOD (синие экраны смерти) русский перевод


Отправлено: 15:24, 04-04-2005 | #7


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


В функции вызов mime_content_type - это страховка. Основной упор сделан на разбор заголовочной информации. И вот если после разбора этой инфы по типу ничего нет, то вызывается страховка. Попробуй, вдруг заработает? Может быть при открытии файлв его тип определяется иначе, не как функцией mime_content_type (хоть и маловероятно). В любом случае можно только посоветовать пнуть серверодержателя - хостера или кто там у вас в универе... это самое верное решение, остальное - финты ушами.

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 18:01, 04-04-2005 | #8


Аватара для Ginger

Рыжая


Сообщения: 1550
Благодарности: 19

Профиль | Сайт | Отправить 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;
}

-------
ХР, 2000, NT - BSOD (синие экраны смерти) русский перевод


Отправлено: 21:06, 04-04-2005 | #9


Аватара для Ginger

Рыжая


Сообщения: 1550
Благодарности: 19

Профиль | Сайт | Отправить PM | Цитировать


Prisoner
ладно.. попрошу что б включили функцию...

-------
ХР, 2000, NT - BSOD (синие экраны смерти) русский перевод


Отправлено: 21:07, 04-04-2005 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » upload .PNG on the server

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Подскажите 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




 
Переход