无法在UploadedFile Symfony上获取文件内容

时间:2017-11-25 15:26:49

标签: symfony

我有以下功能定义:

public function save(UploadedFile $file, string $fileSystemName)
{
    $fs = $this->fileSystemMap->get($fileSystemName);

    $contents = file_get_contents($file->getRealPath());
    $filename = sprintf('%s/%s/%s/%s.%s', date('Y'), date('m'), date('d'), uniqid(), $file->getClientOriginalExtension());

    $fs->write($fileName, $contents);
}

代码运行时:

  

的file_get_contents($文件 - > getRealPath());

它抛出错误说:

  

警告:file_get_contents(/ tmp / phpM9Ckmq):无法打开流:没有这样的文件或目录

请注意,我也尝试使用$ file-> getPathName(),但结果是一样的。

为什么会这样?

谢谢!

3 个答案:

答案 0 :(得分:0)

file_get_contents($file->getFile()->getPathname());

答案 1 :(得分:0)

读取上传文件内容的最简单方法是:

  public function index(Request $request)
{  $raw='';

    if ($request->getMethod() == "POST") {
        $files = $request->files->all();
        foreach ($files as $file) {
            if ($file instanceof UploadedFile) {
                $raw .= file_get_contents($file->getPathname());

            }
        }

    }

    return $this->render('main/index.html.twig', [
        'controller_name' => 'MainController',
    ]);
}

您的数据将存储在$ raw

答案 2 :(得分:-1)

您可以在UploadFormType中使用Symfony \ Component \ Form \ Extension \ Core \ Type \ FileType作为您的文件

类似的东西:

@click.stop="sayHello"

之后你可以在你的控制器中做这样的事情

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('file', UploadFormType::class);
}

$ file将是\ SplFileInfo的一个实例,您可以使用$ file-> getRealPath()方法。