【发布时间】:2021-03-03 13:07:29
【问题描述】:
我有表单提交功能,它在普通控制器中工作得很好,但是由于我已经将我的功能移动到 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
}
HTML
<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>
有什么想法吗?
更新
【问题讨论】:
-
你需要像这样更改你的上传文件代码laravel-livewire.com/docs/2.x/file-uploads
-
@KamleshPaul 我想你误会了我,我的问题不是上传而是验证所选文件
type我需要获取文件类型'image/jpeg','image/gif','image/png'如果我的文件是其中任何一个,那么我会调整大小它。但如果是不同类型i.e. zip我不运行调整大小功能
标签: php laravel laravel-livewire