File upload symfony 4上传
如何在symfony 4中上传文件。我已经完成了symfony文档。我不知道我在哪里错过了什么。上传文件时出错给我一些线索 参考链接: 错误:File upload symfony 4上传,file-upload,doctrine,symfony4,File Upload,Doctrine,Symfony4,如何在symfony 4中上传文件。我已经完成了symfony文档。我不知道我在哪里错过了什么。上传文件时出错给我一些线索 参考链接: 错误: The file "" does not exist 实体 public function getBrochure() { return $this->brochure; } public function setBrochure($brochure) { $this-&
The file "" does not exist
实体
public function getBrochure()
{
return $this->brochure;
}
public function setBrochure($brochure)
{
$this->brochure = $brochure;
return $this;
}
文件上载侦听器
class FileUploader
{
private $targetDirectory;
public function __construct($targetDirectory)
{
$this->targetDirectory = $targetDirectory;
}
public function upload(UploadedFile $file)
{
$fileName = md5(uniqid()).'.'.$file->guessExtension();
$file->move($this->getTargetDirectory(), $fileName);
return $fileName;
}
public function getTargetDirectory()
{
return $this->targetDirectory;
}
}
这篇Symfony教程对我来说很好,所以我将尝试解释它如何,也许它将帮助你或那些仍在寻找答案的人,这篇文章有点过时了 因此,首先必须在App\service中创建FileUploader服务,以提高可重用性(第章:创建上传服务)。你基本上可以复制/粘贴他们在这里所做的,这就像一个符咒。然后,您需要在Config文件夹中打开services.yaml,并显示手册目录:
parameters:
brochures_directory: '%kernel.project_dir%/public/uploads/brochures'
# ...
services:
# ...
App\Service\FileUploader:
arguments:
$targetDirectory: '%brochures_directory%'
现在,一切都可以正常使用您的文件上传服务了。
因此,如果您在控制器中(例如),我猜您希望在表单中使用它。因此,您只需这样做(不要忘记在控制器中使用您的服务):
有一点我忘了说。在FormType中,您需要说明手册将是一个文件类型:
$builder->add('brochure', FileType::class)
但在您的实体中,您必须指定手册存储为“字符串”:
原因是您的文件正在上载并保存在公共/上载/宣传册中。但您的数据库只记住一个字符串路径来访问它
我希望这会有帮助 我在这一行$fileName=md5(uniqid())。$file->guessExtension()中遇到错误;正在上载文件,但显示此错误。。文件“/tmp/phpoblzuA”不存在
$builder->add('brochure', FileType::class)
/**
* @MongoDB\Field(type="string")
*/
protected $brochure;