Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибки Upload`a на php, Ошибки Upload`a на php 
V
    Опции темы
shinobi2
Дата 18.1.2008, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 18.1.2008

Репутация: нет
Всего: нет



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

НО! Если загружаемый файл весит например 100 метров и при 60 метрах закачка обрывается, то этот самый битый файл помещяется в директорию, и запись о нём заносится в текстовую базу.
Я не могу решить чё тут сделать можно, как отследить если загрузка прервалась?

Я пробовал так:
Код

$movefile = "./storage/" . $filecrc; // $filecrc - md5 файла
if(move_uploaded_file($_FILES['upfile']['tmp_name'], $movefile))
{
} else {
die;
   }
$filelist = fopen("./files.txt","a+");
fwrite($filelist, "информация о файле и т.д...");
fclose($filelist);



И даже так:
Код

if (move_uploaded_file($_FILES['upfile']['tmp_name'],$movefile))
{ 
 if($_FILES['upfile']['size']!=filesize($movefile))
 {
  echo "size mismatch";
  unlink($movefile);
 }
$filelist = fopen("./files.txt","a+");
fwrite($filelist, "информация о файле и т.д...");
fclose($filelist);
}

Но всё-равно запись в файл происходит, и он кладётся в директорию storage повреждённым, то есть скока удалось загрузить...

Если кто знает как устранить эту ошибку, то напшите способ!!!
PM MAIL   Вверх
merge
Дата 18.1.2008, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 20.3.2007

Репутация: нет
Всего: 1



проверяй $_FILES['upfile']['error']
PM MAIL   Вверх
MoLeX
Дата 18.1.2008, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



записывай данные о нем после того как файл загрузил (пердворительно проверив его не целостность).


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Demogargon
Дата 18.1.2008, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 9.1.2008

Репутация: нет
Всего: 1



отслеживай 
Код

$_FILE['usefile'] ['error']
// если 0 то файл передан без ошибок
// если 1 то размер файла превышает макс значение
// если 2 то размер файла превышает макс значение заданное в html форме
// если 3 то загружена  только  часть файла
// если 4 то файл не загружен

--------------------
Дело стоит рядом со стоящим, идет за идущим, творит с творящим. Оно следует за нами подобно тени.
PM MAIL ICQ   Вверх
merge
Дата 18.1.2008, 14:53 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 20.3.2007

Репутация: нет
Всего: 1



Цитата(Demogargon @ 18.1.2008,  13:31)
Код

$_FILE['usefile'] ['error']
// если 0 то файл передан без ошибок
// если 1 то размер файла превышает макс значение
// если 2 то размер файла превышает макс значение заданное в html форме
// если 3 то загружена  только  часть файла
// если 4 то файл не загружен

константы вообще-то есть =)

http://ru2.php.net/manual/ru/features.file-upload.errors.php
PM MAIL   Вверх
shinobi2
Дата 18.1.2008, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 18.1.2008

Репутация: нет
Всего: нет



В  $_FILES['upfile']['error'] передаёт 0

И как пердворительно проверить его не целостность ??? Приведите пример пожалуйста
PM MAIL   Вверх
Demogargon
Дата 18.1.2008, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 9.1.2008

Репутация: нет
Всего: 1



вот пример:
Код

        if (($_FILES['userfile'] ['error']) >0)
        {
            echo 'Внимание:<br>';
         switch ($_FILES['userfile'] ['error'])
            {
             case 1: echo 'Размер файла слишком большой.<br>'; break;
            case 2: echo 'Размер файла слишком большой.<br>'; break;
             case 3: echo 'Загружена лишь часть файла.<br>'; break;
             case 4: echo 'Файл не загружен.<br>'; break;  exit;
            }
    }



--------------------
Дело стоит рядом со стоящим, идет за идущим, творит с творящим. Оно следует за нами подобно тени.
PM MAIL ICQ   Вверх
ukrsonic
Дата 22.1.2008, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 29.11.2007

Репутация: нет
Всего: 1



Вот привел кусок кода из своего сценария загрузки файлов
Проверить целостность файла можно сравнив его хэш или по ошибке $_FILES['userfile'] ['error']) == 3


Код

/* SELECT ERROR MSG BY CODE */
function errorMsg($_code){
if(!isset($_code)) $_code = 7;
$_error[0] = "ok";
$_error[1] = "ERROR: Uploaded file '{%%ERROR%%}' bigger as allowed in upload_max_filesize in php.ini!";
$_error[2] = "ERROR: Uploaded file '{%%ERROR%%}' bigger as allowed in MAX_FILE_SIZE in HTML form!";
$_error[3] = "ERROR: File '{%%ERROR%%}' incompleted!";
$_error[4] = "ERROR: File '{%%ERROR%%}' wasn't uploaded! (User set wrong path to file)";
$_error[5] = "ERROR: Check form! Some fields were empty!";
$_error[6] = "ERROR: Can't find uploaded file '{%%ERROR%%}' !";
$_error[7] = "ERROR: Error code missing!";
$_error[8] = "ERROR: Array = 0!";
$_error[9] = "ERROR: Can't move uploaded file!";
$_error[10] = "ERROR: Could not connect to MySQL server: {%%ERROR%%}!";
$_error[11] = "ERROR: Unable to select database: {%%ERROR%%}!";
$_error[12] = "ERROR: Invalid query: {%%ERROR%%}!";
$_error[13] = "ERROR: Didn't return afected rows: {%%ERROR%%}!";
return $_error[$_code];
}


/* GET IMAGE HASH */
function getImgHash($_file){
$_hash = md5_file($_file);
return $_hash;
}




/* SAVE FILE */
function uploadImage($_key, $_path){

    if($_FILES[$_key]['error'] == 0)
    {
        if(is_uploaded_file($_FILES[$_key]['tmp_name']))
        {
            $this->User[$_key] = $_FILES[$_key]['name'];
            
            if(move_uploaded_file($_FILES[$_key]['tmp_name'], $_path.$this->User[$_key]))
            {                 
                if(file_exists($_path.$this->User[$_key]))
                {
                    $this->User['texture_hash'] = $this->getImgHash($_path.$this->User[$_key]);

                    return $this->errorMsg(0);
                } else {
                    return str_replace('{%%ERROR%%}', $this->User[$_key], $this->errorMsg(6));
                } 
            } else {
                return str_replace('{%%ERROR%%}', $this->User[$_key], $this->errorMsg(9));
            }
        } else {
            return str_replace('{%%ERROR%%}', $this->User[$_key], $this->errorMsg(6));
        }
    } else {
        return str_replace('{%%ERROR%%}', $_key, $this->errorMsg($_FILES[$_key]['error'])); // ERROR MSG
    }
}


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.