“奇怪的错误”;对非对象调用成员函数move();在Symfony2中
我正在Symfony2中向表单添加文件上载功能。我已经遵循了,但我一直得到以下错误: 致命错误:对非对象调用成员函数move() 问题是,它所指的代码行是:“奇怪的错误”;对非对象调用成员函数move();在Symfony2中,symfony,Symfony,我正在Symfony2中向表单添加文件上载功能。我已经遵循了,但我一直得到以下错误: 致命错误:对非对象调用成员函数move() 问题是,它所指的代码行是: $this->file->move($this->getUploadRootDir(), $this->file->getClientOriginalName()); 这是我从文档中提取的一行代码。我不完全清楚为什么它会抱怨move()。我已经检查过了,看我是否丢失了任何文件,但我没有 我必须创建对此的引用吗
$this->file->move($this->getUploadRootDir(), $this->file->getClientOriginalName());
这是我从文档中提取的一行代码。我不完全清楚为什么它会抱怨move()
。我已经检查过了,看我是否丢失了任何文件,但我没有
我必须创建对此的引用吗?还是我丢失了一个文件
干杯
编辑:
我已将以下代码添加到upload()
函数的开头:
// the file property can be empty if the field is not required
if (null === $this->file) {
return;
}
但是,我现在得到了以下错误:
1/2:异常:的序列化
不允许使用“Symfony\Component\HttpFoundation\File\UploadedFile”
及
2/2:例外情况:
Symfony\Bridge\Doctrine\DataCollector\DoctrineDataCollector::serialize()
必须返回字符串或NULL
我不知道我所做的是否修复了以前的错误,因为我现在遇到了这些错误。您可能已经解决了
$this->file == null
检查是否已实例化该文件如果无法分配文件属性,则实体中需要两个属性,一个用于保存上载的文件,另一个用于保存文件名(已持久化) 只能将
$file
属性添加到表单中。添加函数
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
public function preUpload() {
if (null !== $this->file) {
$this->path = $this->file->getClientOriginalName();
}
}
然后在上传功能
public function upload() {
if (null === $this->file) {
return;
}
if ($this->file->move($this->getUploadRootDir(), $this->path)) {
// ok uploaded
}else{
echo "failed to upload";
}
}
我在upload()函数的实体文件中有这一行。仍然没有乐趣:(Hi@Loutrailloune,我有同样的问题,但我不能解决它。我知道这与我的财产照片是字符串类型有关,但不知道如何将这样的图像保存在目录中,只保存在数据库中的文件名。如果你能帮助我,你可以看到我的问题。谢谢。
public function upload() {
if (null === $this->file) {
return;
}
if ($this->file->move($this->getUploadRootDir(), $this->path)) {
// ok uploaded
}else{
echo "failed to upload";
}
}