[英]Adding card to Laravel Jetstream / Livewire profile form
[英]laravel livewire image form
我有表单提交功能,该功能在普通控制器中运行良好,但由于我已将功能移至 livewire 组件,因此返回错误
ErrorException
Undefined index: attachment
错误行注释
$chat = new BidChat;
// other fields
if ($this->attachment) {
$attachment = $this->attachment;
$filename = 'chat-attachment' . '-' . time() . '.' . $attachment->getClientOriginalExtension();
$location = public_path('images/' . $filename);
$valid_images = ['image/jpeg','image/gif','image/png'];
if(in_array($_FILES['attachment']['type'], $valid_images)){ <-- error comes from this line
Image::make($attachment)->resize(1300, 362)->save($location);
}
$chat->attachment = $filename;
}
$chat->save();
dd($this->attachment);
Livewire\TemporaryUploadedFile {#1559 ▼
+"disk": "local"
#storage: Illuminate\Filesystem\FilesystemAdapter {#1538 ▶}
#path: "livewire-tmp/najcwwb2OMw5wq0khtJp5hvkFfWk36-metaYmlkLWF0dGFjaG1lbnQtMTUzODEwMDQ0MS5wbmc=-.png"
-test: false
-originalName: "najcwwb2OMw5wq0khtJp5hvkFfWk36-metaYmlkLWF0dGFjaG1lbnQtMTUzODEwMDQ0MS5wbmc=-.png"
-mimeType: "application/octet-stream"
-error: 0
#hashName: null
path: "C:\Users\root\AppData\Local\Temp"
filename: "najcwwb2OMw5wq0khtJp5hvkFfWk36-metaYmlkLWF0dGFjaG1lbnQtMTUzODEwMDQ0MS5wbmc=-.png"
basename: "phpBAD0.tmp"
pathname: "C:\Users\root\AppData\Local\Temp\phpBAD0.tmp"
extension: "tmp"
realPath: "C:\laragon\www\mysite\storage\app\livewire-tmp/najcwwb2OMw5wq0khtJp5hvkFfWk36-metaYmlkLWF0dGFjaG1lbnQtMTUzODEwMDQ0MS5wbmc=-.png"
size: 15036
writable: false
readable: false
executable: false
file: false
dir: false
link: false
}
<form wire:submit.prevent="submit" enctype="multipart/form-data" method="post">
@csrf
<input type="file" wire:model="attachment" class="form-control" />
<button class="button btn-block">Save</button>
</form>
任何的想法?
在 livewire 中,您不能$_FILES['attachment']['type']
访问此数据进行验证,您可以这样做
$chat = new BidChat;
// other fields
if ($this->attachment) {
$attachment = $this->attachment;
$filename = 'chat-attachment' . '-' . time() . '.' . $attachment->getClientOriginalExtension();
$location = public_path('images/' . $filename);
$this->validate([
'attachment' => 'image|mimes:jpeg,png,jpg,gif',
]);
Image::make($attachment)->resize(1300, 362)->save($location);
$chat->attachment = $filename;
}
$chat->save();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.