PHP: файл отсутствует после загрузки - PullRequest
0 голосов
/ 28 февраля 2012

После загрузки вывод print_r для поля изображения выглядит следующим образом

Array 
(
    [name] => foo.png
    [type] => image/png
    [tmp_name] => /tmp/php63EvNo
    [error] => 0
    [size] => 19115 
)

Поскольку error равно нулю, а filesize не равно нулю, я предполагаю, что загрузка прошла успешно.

Последующий вызов для перемещения загруженного файла завершается неудачно: move_uploaded_file(...): failed to open stream: Permission denied

После проверки /tmp файла с именем tmp_name там нет.

Что вызывает такое поведение / как исправить?

Спасибо!


Дополнительная информация: Стек LAMP, работает PHP5, CakePHP 2.0

Форма: PHP / торт код:

echo $form->input('Foo.image', array('type' => 'file'));

HTML, который отображается:

<input type="file" name="data[Foo][image]"  id="FooImage"/>

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Временно загруженные файлы в /tmp удаляются в конце запроса - они не сохраняются в течение длительного времени. Вы должны использовать move_uploaded_file во время запроса, который получил загрузку, если вам небезразличен файл.

0 голосов
/ 27 марта 2013

Скорее всего, проблема с разрешениями.Также рассмотрите возможность использования переменных папки cakePHP.Компонент загрузки у меня выглядит следующим образом:

$file = $this->request->data['Client']['image'];

$filename = $file['tmp_name'];
$filePath = WWW_ROOT . DS . 'files' . DS . $file['name'];

if(move_uploaded_file($filename, $filePath))
    return '/files/'.$file['name']; // saves location of uploaded file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...