Laravel 上传图片与读取图片

文件上传

在控制器中调用文件上传代码

	use App\Http\Controllers\Controller;
	
	use App\Service\Image;
	
	public function uploadimage(){

		$UploadImg = new Image();

		$response = $UploadImg->Upload($this->request,'file');

		return $response;

    }

上传文件

	public function Upload($request,$filename){
		 //检查上传文件中是否包含文件
    	 if ($request->hasFile($filename)) {
		 	//获取上传文件内容
    	 	$file = $request->file($filename);
			//获取文件尾缀
    	 	$extension = $file->extension();
		
    	 	if($extension == "jpg" || $extension == "jpeg" || $extension == "png"){
				//文件上传位置
    	 		$path = $file->store('category');
    	 		
    	 		return json_box('SUCCESS',200,'上传成功',$path);
    	 	}
		  	return json_box('FAIL',201,'文件格式不正确');
		 }
    	return json_box('FAIL',400,'上传文件不存在');;
	}

文件存储在项目根目录下 storage\app


文件读取

在路由文件中新增加获取图片文件的路由

Route::get('/getimage/{one?}/{two?}/{three?}/{four?}/{five?}/{six?}/{seven?}/{eight?}/{nine?}',function(){
    \App\Service\Image::imageStorageRoute();
});
//这里使用了闭包函数

路由指向的方法

    static public function imageStorageRoute(){
        //获取当前的url
        $realpath = str_replace('getimage/','',Request::path());

        $path = storage_path() ."/". $realpath;

        //查看目录下是否存在文件
        if(!file_exists($path)){
            //报404错误
            header("HTTP/1.1 404 Not Found");
            header("Status: 404 Not Found");
            exit;
        }

        //输出图片
        header('Content-type: image/jpg');
        echo file_get_contents($path);
        exit;
    }

然后就可以在页面中通过路由进行访问图片了

 <div class="layui-card-body"><img src="/getimage/app/{{ $data->thumbnail }}" width="100" height="100"></div>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Laravel上传图片并回显,你可以按照以下步骤进行操作: 1. 在表单中添加文件上传字段: ```html <form method="POST" action="/upload" enctype="multipart/form-data"> @csrf <input type="file" name="image"> <button type="submit">上传图片</button> </form> ``` 2. 在路由中定义上传图片的处理逻辑: ```php use Illuminate\Http\Request; Route::post('/upload', function (Request $request) { if ($request->hasFile('image')) { $path = $request->file('image')->store('public/images'); // 存储的路径为 "storage/images/filename" // 如果你想要访问图片,可以将路径存储到数据库,并使用 Storage::url() 获取完整路径 // 也可以直接拼接 URL,例如:$url = '/storage/images/' . $request->file('image')->hashName(); return redirect()->back()->with('success', '图片上传成功'); } return redirect()->back()->with('error', '请选择要上传的图片'); }); ``` 3. 在视图中回显上传的图片: ```html @if(session('success')) <div class="alert alert-success">{{ session('success') }}</div> @endif @if(session('error')) <div class="alert alert-danger">{{ session('error') }}</div> @endif @if(isset($url)) <img src="{{ $url }}" alt="Uploaded Image"> @endif ``` 上述代码中,`$url` 是存储图片路径的变量,可以在控制器中把它传递给视图。使用`$url`作为图片的`src`属性,图片就会回显在页面上。 请确保在进行文件上传时,已经配置好了Laravel的文件存储系统,并且有合适的权限以保存和访问上传的图片。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值