PHP: Загрузка файла


Я здесь с проблемой, сделать загружать XML-файл в PHP.

у Меня есть форма, которая позволяет мне выбрать файл:

<form id="upload" action='' method='post' enctype="multipart/form-data" >
     <input id='uploaded_file' type='file' name='uploaded_file' title="Procurar ficheiro" /> 
     <input class="btn btn-primary" type="submit" name ="submitA_" value="Upload"/>
</form>

у Меня есть код, чтобы прочитать файл (через DOM), а затем импортировать данные в БД:

$uploaded  = (object) $_FILES['uploaded_file']; //line 42
$import->dom->load( $uploaded->tmp_name );
$import->updateDB();

что происходит, когда файл является относительно большой (9MB), объект $uploaded->tmp_name и остается пустым, и, вследствие этого, не сделан загружать BD, следует вниз warning PHP:

Warning: DOMDocument::load(): Empty string supplied as input on line 42

$uploaded->error - NULL и результат var_dump($uploaded);:

Object(stdClass)#2 (0) { }

Примечание: php.ini я upload_max_filesize = 128M max_execution_time = 60

Author: Jorge B., 2014-05-12

2 answers

Проблема заключается в конфигурации PHP (php.ini):

post_max_size = 8M

Если размер данных, размещенные превышает post_max_size и тогда superglobais $_POST и $_FILES пусты.

Находится здесь на совет, чтобы проверить, если возникают проблемы при загрузки файлов на PHP, чтобы проверить, всегда в php.ini:

Принимая во внимание, что размер post_max_size должна превышать upload_max_filesize. memory limit активен на вашем сценария должно быть больше post_max_size.

На Основе ответ SOEN и документации PHP

 4
Author: Jorge B., 2017-05-23 12:37:23

Я Сначала не было достигнуто воспроизвести вашу ошибку, ваш код слегка адаптированы. Здесь я получил:

DOMDocument::load(): I/O warning : failed to load external entity

Несмотря на то, что сообщение ясно с точки зрения input/output не очень помогает, когда контекст загрузки.

В соответствии с эта ошибка сообщалось, DOMDocument::load() не учитывает include_path, что требует что path абсолютный сообщили, что не имеет никакого смысла, поскольку значение этого параметра, $_FILES уже является абсолютным.

", упрямство, провел значение, передаваемое в ДАР, realpath(). То же, что realpathне повлияло на данные, это, продолжил path абсолютный правильно, я смог воспроизвести вашу ошибку. Возможно, даже потому, что ДАР force cast string ((string) FALSE), что создает пустую строку.

Пошел за временный файл, и даже не существовало (!). Повторно загрузил файл, и она работала, но файл все еще испарится.

Всех этих проблем, единственным правдоподобным, и до сих пор свободной от непредвиденных был вернуться к бе-а-ба загрузки файлов, и на самом ДЕЛЕ загрузить файл.

Дано случае учителю на вопрос, не стал, очень безопасно и просто сделал это:

if( $uploaded -> error == ERR_OK ) {

    move_uploaded_file( $uploaded -> tmp_name, './uploaded.xml' );
}

И провел файл отправлен, здесь назван uploaded.xml, метода DOM:

$dom = new DOMDocument;

$dom -> load( './uploaded.xml' );
 2
Author: Bruno Augusto, 2014-05-12 19:33:24