gpt4 book ai didi

php - Laravel - store() 方法突然不起作用

转载 作者:行者123 更新时间:2023-12-05 01:44:25 24 4
gpt4 key购买 nike

我有一个可以正常工作的单个图像的文件上传方法,使用以下代码:

$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);
}

$fileUploadedFile 的一个实例,store() 方法完美运行。

但是,我需要更改方法以允许上传多个文件。以下改编代码会导致以下错误:

$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);
}
}
}

调用未定义的方法 Symfony\Component\HttpFoundation\File\UploadedFile::store()

$pdd 输出:

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 应该使用 Illuminate\Http\UploadedFile 有正确的 store() 方法 ( docs ) 而不是 Symfony 的类没有那个方法(docs)

另外,使用 Symfony 的 move() 更糟糕,因为 store() 已经用生成的文件名和扩展名保存了文件,所以我没有生成一个随机文件名并猜测扩展名,因为它不是很可靠。

底线是:为什么它会这样,我怎样才能让它使用正确的类实例?

最佳答案

您只能在请求实例上使用您正在使用的存储方法。

也许你可以尝试做这样的事情

foreach($photo as $index => $p) {
$request->file('files')[$index]->store();
}

关于php - Laravel - store() 方法突然不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46311074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com