Как загрузить файл в Symfony 1.2 без использования определенной формы - PullRequest
2 голосов
/ 22 декабря 2009

До сих пор я не делал много загрузок файлов в Symfony, и я пытаюсь выяснить, как это сделать в 1.2 +

Я могу получить файлы, отправленные в действие, и получить их через:

$files = $request->getFiles();

Как я могу получить и сохранить файл в файловой системе? Я не вижу никакой документации, кроме устаревшего кода 1.0.

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

Как мне сохранить эти файлы на диск.

Ответы [ 4 ]

6 голосов
/ 24 декабря 2009

Если вы не хотите загружать файлы с помощью форм Symfony, то также будет работать следующий код:

foreach($request->getFiles() as $file)
{
    move_uploaded_file($file["tmp_name"], $directory . "/" . $file['name']);
}
3 голосов
/ 22 декабря 2009

Внутри действия после привязки параметров к форме:

  $file = $your_form->getValue('your_file_field');

  $filename  = $file->getOriginalName(); //or whatever name
  $extension = $file->getExtension($file->getOriginalExtension());
  $file->save(sfConfig::get('sf_upload_dir').'/'.$filename.$extension);

btw, вы можете найти документацию по Symfony 1.2 в соответствующей книге Symfony Forms in Action: Файл главы 02загрузить

ps: не забудьте вручную добавить enctype="multipart/form-data" в свою HTML-форму!

1 голос
/ 17 января 2013

Если вы все еще ищете, почему вы не можете получить доступ к загруженному файлу с помощью $ request-> getFiles (), возможно, вы забыли добавить enctype="multipart/form-data".

На самом деле, вы должны иметь такую ​​форму:

<form enctype="multipart/form-data" action="/yourdestination" method="post">
   <input type="file" name="somedummyfile"/>
   <input type="submit" value="Send"/>
</form>

И ваши действия должны сделать что-то вроде этого:

$dummyfile = $request->getFiles('somedummyfile');
echo $dummyfile['tmp_name']; // Current filepath
echo $dummyfile['name']; // filename

Надеюсь, это поможет!

1 голос
/ 30 декабря 2010

Спасибо, друг. Я ищу этот код в течение 2 дней. Я новичок в PHP, даже я пытаюсь Symfony. Мой код для Symfony.

$this->filetype = $_FILES['file']['type'];
foreach ( $request -> getFiles () as  $file )
{ 
    if(move_uploaded_file ( $file [ "tmp_name" ],  sfConfig::get('sf_upload_dir').'/myfile/'.  $file [ 'name' ]))
    { 
        $this-setTemplate('success');
    } 
    else
    {
        $this-setTemplate('failure')
    }
} 

аналогичным образом используйте $filetype для проверки типа загруженного файла. Проверьте ссылку на файл php. Для типов файлов. Наслаждайтесь ..

...