php - 无法在 laravel 6 中加载图像
问题描述
我是laravel的新手
我刚刚成功上传了一张图片并在数据库中存储了名称。也将“公共”文件夹链接到“存储/应用程序/公共”,但无法在页面上显示。图像也在具有受保护随机名称的文件夹上。我也无法使用该网址加载图像“ http://localhost:8000/storage/flower.jpg ”。我现在该怎么办 ????
网页.php
Auth::routes();
Route::post('/update/{id}','HomeController@update')->name('update');
Route::get('/home', 'HomeController@index')->name('home');
HomeContoller.php
public function update(Request $request,$id){
$student = user::find($id);
if ($file = $request->file('profile_image')) {
$file = $request->file('profile_image');
$request->file('profile_image')->store('public/');
$img_nm = $file->getClientOriginalName();
$request->file('profile_image')->getClientOriginalName();
$student->image = $img_nm;
}
$student->username = $request ->username;
$student->first_name = $request ->first_name;
$student->last_name = $request ->last_name;
$student->gender = $request ->gender;
$student->email = $request ->email;
$student -> save();
return redirect()->route('home');
}
主页.blade.php
<td>
<img src="{{ asset('storage/'.$student-> image) }}"/>
</td>
文件系统.php
'default' => env('FILESYSTEM_DRIVER', 'local'),
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
解决方案
上传方式不对,如果需要原文件名的话,使用storeAs
函数,
$file = $request->file('profile_image');
$img_nm = $file->getClientOriginalName();
$file->storeAs('images', $img_nm);
$student->image = $img_nm;
参考https://laravel.com/docs/6.x/filesystem#file-uploads
在你的刀片文件中,使用这个
<img src="{{asset('storage/images/'.$student->image)}}">
希望这可以帮助。
推荐阅读
- ios - Graphql - iOS 中的数据获取
- python - 如何在 2 个字符串中获取一个字符串?
- ios - 类型“UIButton”没有成员“发件人”
- clang-tidy - 将子选项设置为 clang-tidy
- php - 每个数组元素的计数字符串
- python - 没有使用 django 2.1.3 访问的上下文处理器内容
- angular - angular 6 应用程序的活动 Https
- node.js - 我如何在使用 sequelize 的包含模型中使用限制
- java - 在 Websocket 通过 Nginx 转发用户 IP
- android - 使用 Material Components 和 androidX 编译 Android 应用程序时出错