繁体   English   中英

laravel livewire 图像形式

[英]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
}

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>

任何的想法?

更新

这似乎是已知问题

在 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();

参考链接https://laravel-livewire.com/docs/2.x/file-uploads

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM