내가 하나의 이미지에 대한 파일 업로드 방법은 다음 코드를 사용하여 제대로 작동이 작동하지 않는 점() 메소드 :Laravel 갑자기
$file = $request->file('file');
if ($file && $file->isValid()) {
$photo['size'] = $request->file('file')->getClientSize();
$path = $request->file('file')->store($request->subdomain);
$path = explode('/', $path);
$photo['file'] = $path[1];
$photo['cover'] = 1;
$photo['gallery'] = $newGallery->id;
$photo['uploaded_by'] = $user->id;
Photo::create($photo);
}
$file
는 store()
방법 작품 여기 UploadedFile
의 인스턴스이며, 아주.
그러나 여러 파일을 업로드 할 수 있도록 방법을 변경해야했습니다. 다음 적응 코드가 다음 오류 그물 :
$photos = $request->files->all();
foreach($photos as $photo) {
foreach($photo as $p) {
if($p->isValid()) {
$path = $p->store($request->subdomain);
$path = explode('/', $path);
$newPhoto = [
'uploaded_by' => $user->id,
'file' => $path[1],
'size' => $p->getClientSize(),
'gallery' => $request->gallery,
'subdomain' => $request->subdomain,
];
Photo::create($requestData);
}
}
}
Call to undefined method Symfony\Component\HttpFoundation\File\UploadedFile::store()
$p
의 dd
출력 :
UploadedFile {#28 ▼
-test: false
-originalName: "Untitled.png"
-mimeType: "image/png"
-size: 18030
-error: 0
path: "/tmp"
filename: "phpBDSWCR"
basename: "phpBDSWCR"
pathname: "/tmp/phpBDSWCR"
extension: ""
realPath: "/tmp/phpBDSWCR"
aTime: 2017-09-19 20:19:57
mTime: 2017-09-19 20:19:57
cTime: 2017-09-19 20:19:57
inode: 3014878
size: 18030
perms: 0100600
owner: 1000
group: 1000
type: "file"
writable: true
readable: true
executable: false
file: true
dir: false
link: false
}
Laravel 적절한 store()
을 갖는다 Illuminate\Http\UploadedFile
를 사용해야 같이 상당히 이상한 메서드 (docs)를 가지고 있지 않은 Symfony의 클래스 (docs)
또한 symfony의 move()
을 사용하면 store()
이 생성 된 파일 이름과 확장자로 파일을 이미 저장하므로 매우 안정적이지 않으므로 임의의 파일 이름을 생성하고 확장명을 추측 할 필요가 없습니다.
결론은 다음과 같습니다. 왜 그런 식으로 행동하며 적절한 클래스 인스턴스를 사용하게 할 수 있습니까?
같은 일을 시도 할 수 있을까? – Jonathon
''Symfony \ Component \ HttpFoundation \ File \ UploadedFile '' –
이전 작업 단일 업로드에서'dd (get_class ($ request-> file ('file ')') 출력 : "Illuminate \ Http \ UploadedFile"' –