可更新的 stof 学说扩展 - 文件“”不存在

Uplodable stof doctrine extensions - The file "" does not exist

我的问题

我打算让 stof/StofDoctrineExtensionsBundlesymfony3 一起工作。因此,我没有使用 stof 文档中示例中列出的 $form->bind,而是尝试了 $form->handleRequest。不幸的是,在提交表单后我收到以下错误:

The file "" does not exist

如果你能告诉我我做错了什么,我将不胜感激。也许有人会很友善并向我提供有效上传脚本的示例?


我的代码


我的控制器代码如下所示:

 public function plikAction(Request $request, $dok_id, $plik_id)
    { 
        $em = $this->getDoctrine()->getManager();
        if($plik_id == "nowy") $plik = new plik();
        /.../
        $form = $this->createForm(plikType::class, $plik);

        $form->handleRequest($request);
        if ($form->isSubmitted() && $form->isValid()) 
        {
            if($plik_id == "nowy")
            {
                $em->persist($plik);
                $uploadableManager = $this->get('stof_doctrine_extensions.uploadable.manager');
                $uploadableManager->markEntityToUpload($plik, $plik->getName());
                $em->flush();
                $this->get('session')->getFlashBag()->add('success','Dodano plik ');
            }
            /.../
    }

表单是使用以下函数构建的:

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('oznaczenie')
            ->add('name', FileType::class)
            ->add('wgraj', SubmitType::class);
    }

和我的实体 class:

/**
 * @ORM\Entity
 * @ORM\Table
  * @Gedmo\Uploadable
 */
class plik
{

    /**
     * @ORM\Column
     * @Gedmo\UploadableFileName
     */
    private $name;

    /*
     * @ORM\Column(type="string", length=100)
     * @Gedmo\UploadableFilePath
     */
     protected $path;

我正在使用此处列出的默认配置 https://symfony.com/doc/master/bundles/StofDoctrineExtensionsBundle/index.html

在我的例子中 Symfony3 错误:

The file “” does not exist

与 PHP 相关,由于 open_basedir 限制,无法将文件写入临时文件夹。

因此,无论如何您在 Symfony3 中看到此错误,请确保为文件夹设置了正确的权限,并且 PHP 可以将数据写入其中。

默认情况下 default_file_path 的值为 %kernel.root_dir%/../web/uploads

要使其使用默认配置,
在应用程序的 web 目录中创建 uploads 文件夹:

mkdir web/uploads    

并根据您的网络服务器用户设置正确的权限使其可写。

假设 www-data 是网络服务器用户,使用以下内容:

chown -R www-data:www-data web/uploads

或使用 chmod 更改目录权限(风险自负):

chmod -R 755 web/uploads

(如果此命令需要以 root 身份执行,请在它们前面加上 sudo

希望这能解决您的问题。