我正在嘗試通過表單將一些檔案上傳到我的資料庫以及我的專案的存盤中
我在主頁上做了以下代碼:
<x-layout>
@if (session('message'))
<div class="alert alert-success">{{session('message')}}</div>
@endif
<div class="container vh-100">
<div class="row h-100 w-100 align-items-center">
<div class="offset-3 col-6">
<form method="POST" action="{{route('transfer.submit')}}" class="card" enctype="multipart/form-data">
@csrf
<div class="border w-100" id="fileWrapper">
<div class="mb-3 w-100 h-100">
<input type="file" class="form-control w-100 h-100 fileInput" id="fileupload" name="files[]" multiple >
</div>
</div>
<div class="mb-3">
<label for="exampleInputPassword1" class="form-label">Invia file a </label>
<input type="email" class="form-control" id="exampleInputPassword1" name="recipient_mail">
</div>
<div class="mb-3">
<label for="exampleInputPassword1" class="form-label">La tua mail</label>
<input type="email" class="form-control" id="exampleInputPassword1" name="sender_mail">
</div>
<div class="mb-3">
<input type="text" class="form-control" id="title" name="title">
</div>
<div class="mb-3">
<textarea name="message" cols="50" rows="10"></textarea>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
</div>
</x-layout>
然后我在我的模型中完成了以下操作:
protected $fillable = [
'recipient_mail',
'sender_mail',
'title',
'message',
'files[]'
];
以及我的控制器中的以下內容:
public function transferSubmit(TransferRequest $request){
$transfer = Transfer::create([
'sender_mail'=>$request->input('sender_mail'),
'recipient_mail'=>$request->input('recipient_mail'),
'title'=>$request->input('title'),
'message'=>$request->input('message'),
'files'=>$request->file('files[]')->store('public/files'),
]);
return redirect(route('home'))->with('message', 'File inviato con successo');
}
我還創建了 POST 路由并完成了遷移,但是,當我嘗試提交表單時,出現以下錯誤:
在 null 上呼叫成員函式 store() 時出錯
在此之后,我嘗試 dd($request) ro 檢查我實際傳遞給 Trasnfer 類的資料,我發現它正確接收了每個資料,包括檔案陣列。
有沒有人可以幫助我理解為什么我會收到這個錯誤?
非常感謝
uj5u.com熱心網友回復:
您想存盤多個檔案。你會得到一個陣列。然后你必須像這樣迭代你的檔案陣列。
$files = [];
if($request->hasfile('files[]'))
{
foreach($request->file('files[]') as $file)
{
$files => $file->store('public/files'),
}
}
重要提示:
在使用 Laravel 存盤之前不要忘記符號鏈接。
php artisan storage:link
更新 您首先迭代,然后您擁有包含影像路徑的檔案陣列。然后您可以將其傳遞給您的模型。
一點注意:來自表單的資料應該始終被驗證。
public function transferSubmit(TransferRequest $request){
$files = [];
if($request->hasfile('files[]'))
{
foreach($request->file('files[]') as $file)
{
$files => $file->store('public/files'),
}
}
$transfer = Transfer::create([
'sender_mail'=>$request->input('sender_mail'),
'recipient_mail'=>$request->input('recipient_mail'),
'title'=>$request->input('title'),
'message'=>$request->input('message'),
'files'=> $files;
return redirect(route('home'))->with('message', 'File inviato con successo');
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/351201.html
