簡體   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