0
파일 이름을 지정하려면 다음과 같이 지정합니다. Username-OriginalFileName. 심포니 요리 책 here파일의 사용자 이름이 포함 된 파일 업로드에 파일 이름 생성
/**
* @Assert\File(maxSize="6000000")
*/
public $FILE_file;
public $path;
public function getPath()
{
return $this->path;
}
public function setPath($path)
{
return $this->path=$path;
}
public function getAbsolutePath()
{
return null === $this->path ? null : $this->getUploadRootDir().'/'.$this->path;
}
public function getWebPath()
{
return null === $this->path ? null : $this->getUploadDir().'/'.$this->path;
}
protected function getUploadRootDir()
{
return __DIR__.'/../../../../web/'.$this->getUploadDir();
}
protected function getUploadDir()
{
return 'uploads/files';
}
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
public function preUpload()
{
if (null !== $this->FILE_file) {
$username=$this->get('security.context')->getToken()->getUser()->getUsername();
$this->path = $username.'-'.$this->path;
}
}
/**
* @ORM\PostPersist()
* @ORM\PostUpdate()
*/
public function upload()
{
// the file property can be empty if the field is not required
if (null === $this->FILE_file) {
return;
}
$this->FILE_file->move($this->getUploadRootDir(), $this->FILE_file->getClientOriginalName());
$this->path = $this->FILE_file->getClientOriginalName();
$this->FILE_file = null;
}
에 설명 된대로 내 최초의 솔루션 내 파일 엔티티에 preUpload 콜백을 사용하는 것이었다 그러나 내가 엔티티에서 용기를 얻을 수없는 것 같다. 그래서 난 내 파일 컨트롤러에서이 작업을 수행하려고했습니다 :
$filename=$username.'-'.$file->path;
$file->setPath($filename);
$file->setFILEFormat($ext);
...
$em1->persist($file);
$em1->flush();
$file->upload();
$content=$file->getContent();
의 getContent 파일을 열고 문자열 배열의 내용을 저장하는 기능입니다. 어떤 이유로 파일은 $ filename이 아닌 업로드 양식의 OriginalName과 함께 유지되고 업로드됩니다. 내가 도대체 뭘 잘못하고있는 겁니까?
어떻게 든 preUpload 콜백이 작동하지 않았다 들어 다른 당신이 뭔가를 할 수 있습니다. 나는 이것을 업로드 기능에 추가했고 작동한다. 감사. – Wissem