Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Проблема с загрузкой файлов на сервер (https://javascript.ru/forum/server/20422-problema-s-zagruzkojj-fajjlov-na-server.html)

shkarbatov 07.08.2011 19:36

Проблема с загрузкой файлов на сервер
 
Подскажите пожалуйста. Мне необходимо сделать форму загрузки файлов на сервер (на локальном хостинге оно работает нормально, но вот на сервере не хочет). Подскажите пожалуйста в чем именно ошибка.


if(($_FILES["filename"]["size"] < 1024*16*1024) && ($type == "jpg")) 
{ 

    // Проверяем загружен ли файл 
    echo $_FILES["filename"]["tmp_name"]; 
    if(is_uploaded_file($_FILES["filename"]["tmp_name"])) 
    { 
        // Если файл загружен успешно, перемещаем его 
        // из временной директории в конечную  
         
        move_uploaded_file($_FILES["filename"]["tmp_name"],"kirill/".$_FILES["filename"]["name"]); 
        echo 'все good'; 
    } 
    else  
    { 
        echo("Ошибка загрузки файла"); 
    } 
}



По чему-то оно всегда выводит "Ошибка загрузки файла" (то есть $_FILES["filename"]["tmp_name"] имеет пустое значение, хотя на локальном хостинге все работает).

Подскажите пожалуйста в чем проблема. Заранее благодарен всем отозвавшимся.

walik 07.08.2011 22:59

Размер файла может слишком большой ?
Не превышает ли размер файла, размеры допустимые в настройках (upload_max_filesize и post_max_size) ?
Что выводят эти строчки:
echo ini_get('upload_max_filesize');
echo ini_get('post_max_size');



Так же можете заглянуть какой номер ошибки при загрузке:
echo $_FILES["filename"]['error'];

а в нете уже посмотреть что эта ошибка означает

devote 07.08.2011 23:20

if ( isset( $_FILES["filename"] ) && 
    ( $_FILES["filename"]["error"] == 0 ) && 
    ( is_uploaded_file( $_FILES["filename"]["tmp_name"] ) ) ) {

        $ext = strtolower( pathinfo( $_FILES['filename']['name'], PATHINFO_EXTENSION ) );

        if ( ( $ext == "jpg" ) && ( $_FILES["filename"]["size"] < 1024*16*1024 ) ) {
                move_uploaded_file( $_FILES["filename"]["tmp_name"], "kirill/".$_FILES["filename"]["name"] ); 
                echo 'все good'; 
        }
} else {
        echo("Ошибка загрузки файла"); 
}
Проверяй значение переменной $_FILES["filename"]["error"] номер ошибки укажет тебе проблему, вот тут можно почитать о номерах ошибок http://docs.php.net/manual/ru/featur...oad.errors.php

shkarbatov 07.08.2011 23:30

Вот что выводит

echo ini_get('upload_max_filesize');
echo ini_get('post_max_size');
echo $_FILES["filename"]['error'];


32M
16M
2

Значение: 2; Размер загружаемого файла превысил значение MAX_FILE_SIZE, указанное в HTML-форме.

Но в HTML-форме ничего не указано, да и размер загружаемого файла = 244 КБ

devote 07.08.2011 23:40

Значит кто-то его добавляет, ибо ПХП проверяет пришедшие значения в пост... Хотя как ни странно, сам браузер не должен дать заливать файл который превышает размер указанного в форме. Но все же кто-то посылает подобное это в POST раз ПХП говорит об этом.

shkarbatov 08.08.2011 00:18

Мне кажется, что просто файл не загружается во временный каталог, я запросил на хостинге содержимое файла php.ini что-бы посмотреть в какой по умолчанию каталог заносятся временные файлы.
Как по мне, то нету либо этого каталога, либо там стоят не корректные права. Короче как ответят, так и будем думать.
Просто не может быть ограничение на 240кб =)

LeopardX 26.08.2011 19:48

Стандартное рамер загружаемых файлов у apatcha 5 метров. Вот держи там вместе с директорией $uploaddir = 'userfile/';
$uploadfile = $uploaddir . basename($_FILES['foto']['name']);
move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile);
rename("userfile/".$_FILES['foto']['name'],"userfile/".md5($nomerdela.$_FILES['foto']['name']));

devote 27.08.2011 01:49

Цитата:

Сообщение от LeopardX
Стандартное рамер загружаемых файлов у apatcha 5 метров.

Хаха, ну ты насмешил... Ты думаешь админы на хостах прям оставляют стандартное значение?
Цитата:

Сообщение от LeopardX
$uploadfile = $uploaddir . basename($_FILES['foto']['name']);
move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile);
rename("userfile/".$_FILES['foto']['name'],"userfile/".md5($nomerdela.$_FILES['foto']['name']));

И как ему поможет вот эта твоя писанина?


Часовой пояс GMT +3, время: 04:01.