0 レビュー
1 回答
php-PDFを表示404LARAVEL7
クライアントが候補者がアップロードした申請者のドキュメントを表示できるボタンが欲しいのですが、何らかの理由でそれが機能しない理由がわかりません。
オフラインでは正常に機能していましたが、今日はFTP経由でサイトを展開しましたが、機能したくありません。
私はジュニア開発者ではないので、厄介なコードについて親切にしてください。
これが私のコードです
アップロードブレード:
<form action="{{route('cv')}}" method="POST" enctype="multipart/form-data">@csrf
<div class="card">
<div class="card-header">Update CV</div>
<div class="card-body">
<input type="file" class="form-control" name="cv"><br>
<button class="btn btn-success float-right"
type="submit">Update</button>
@if($errors->has('cv'))
<div class="error" style="color: red;">{{$errors->first('cv')}}</div>
@endif
</div>
</div>
ルートのコード:
Route::post('user/cv','[email protected]')->name('cv');
コントローラーのコード:
public function cv(Request $request){
$user_id = auth()->user()->id;
$cv = $request->file('cv')->store(public_path('storage/files'));
Profile::where('user_id',$user_id)->update(['cv'=>$request->file('cv')->getClientOriginalName()]);
return redirect()->back()->with('message', 'CV Successfully Updated!');
}
CVを表示するためのコード:
<a href="{{Storage::url($profile->cv)}}" class="btn btn-outline-primary">View my CV</a>
ボタンをクリックすると、次のURLが表示されます:
cvroad.co.za/storage/Kevin%20Breed.pdf
ファイルの名前はKevinBreed.pdfで、これが私のデータベースでも表示されます。
それでも404が見つかりませんか?
すべての助けをいただければ幸いです。ありがとうございます!
わからない
0
レビュー
答え :
解決策:
ファイルパスをハードコーディングする代わりに、Laravelの storage_path()
を使用して正しいパスを取得します。
$cv = $request->file('cv')->store(storage_path('files'));
Storage::url()
を使用している場合は、 public/storage
を検索しているため、適切な方法で処理できる可能性があります。 public_pathを使用するには
$cv = $request->file('cv')->store(public_path('storage/files'));
また、データベースに保存するときは、名前だけでなくフルパスも保存します。次のように名前だけを保存できます:
Profile::where('user_id',$user_id)->update(['cv'=>$request->file('cv')->getClientOriginalName()]);
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。