我想要stof/StofDoctrineExtensionsBundle
与symfony3
合作。因此,我尝试$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。
答案 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可以将数据写入其中。