2012-02-28 9 views
0

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

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 нет.

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

Спасибо!


Дополнительно: стек ЛАМПЫ, работает PHP5, CakePHP 2,0

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

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

HTML, который визуализируется:

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

попробуйте найти файл. вы могли бы потерять его или проверить права доступа к папке. – Joseph

+1

Можем ли мы увидеть часть 'move_uploaded_file'? –

+0

@Joseph - разрешение папки действительно было проблемой - 'chmod -R 777' на предполагаемом месте исправил проблему. Если вы ответите на этот вопрос, я дам вам галочку. – bguiz

ответ

1

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

0

Скорее всего, вопрос с разрешениями. Также рассмотрите использование переменных папки 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 
Смежные вопросы