可更新的 stof 学说扩展 - 文件“”不存在
Uplodable stof doctrine extensions - The file "" does not exist
我的问题
我打算让 stof/StofDoctrineExtensionsBundle
与 symfony3
一起工作。因此,我没有使用 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
)
希望这能解决您的问题。
我的问题
我打算让 stof/StofDoctrineExtensionsBundle
与 symfony3
一起工作。因此,我没有使用 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
)
希望这能解决您的问题。