Uplodable stof doctrine extensions - 文件“”不存在

时间:2016-02-18 19:36:56

标签: symfony doctrine-extensions stofdoctrineextensions doctrine-uploadable

我的问题

我想要stof/StofDoctrineExtensionsBundlesymfony3合作。因此,我尝试$form->bind而不是使用stof文档中的示例中列出的$form->handleRequest。不幸的是,在提交表单后,我收到以下错误:

  

文件“”不存在

我很感谢你建议我做错了什么。也许有人会这么善良并向我提供工作上传脚本的例子?

我的代码

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

 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);
    }

和我的实体类:

/**
 * @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

2 个答案:

答案 0 :(得分:1)

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

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

mkdir web/uploads    

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

假设www-data是Web服务器用户,请使用以下命令:

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

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

chmod -R 755 web/uploads

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

希望这能解决你的问题。

答案 1 :(得分:0)

在我的情况下,open_basedir错误:

  

文件“”不存在

由于repositories { maven { url "http://artifacts.us:8081/artifactory/repo" } mavenLocal() mavenCentral() } ... configurations.all { resolutionStrategy.cacheChangingModulesFor 0, 'seconds' ... (bunch of modules) compile(group:"com.mystuff", name: "some_util", version: "+", changing: true) } 限制,

与PHP连接无法将文件写入临时文件夹。

因此,在任何情况下,您都会在Symfony3中看到此错误,确保将正确的权限设置为文件夹,并且PHP可以将数据写入其中。