显示上传到laravel的storage目录中的图片

Laravel提供了强大文件系统,开发文件管理非常方便。默认情况下web只能访问public公共磁盘目录。

访问storage下任意图片

如果图片不是放在storage公共磁盘中,可以定义一个用于访问图片的路由,如下:

routes/web.php定义路由:

1
2
3
4
5
// file manager
Route::group(['prefix' => 'filemanager'], function () {
Route::get('show', 'FileManageController@get')->name('filemanager.show');
});

FileManageController.php中定义action:

1
2
3
4
5
6
7
8
9
10
/**
* @param Request $request
* @return mixed
*/
public function get(Request $request)
{
$filename = $request->get('filename', '');
$file = Storage::get($filename);
return response($file, 200)->header('Content-Type', Storage::mimeType($filename));
}

view里的图片:

1
<img src="{{route('filemanager.show',['filename'=>$image['name']])}}">

laravel处理跨域请求

写webapi总离开不跨域问题,总结下自己在做laravel开发的处理跨域请求方案。

推荐使用dingo/api扩展包

1、用laravel中间件,基于CORS

创建中间件CrossDomainMiddleware.php,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php

namespace App\Http\Middleware;

use Closure;

class CrossDomainMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
$response->header('Access-Control-Allow-Origin', '*');
$response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, Accept');
$response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS');
$response->header('Access-Control-Allow-Credentials', 'true');
return $response;
}
}

php函数array_chunk的妙用

如果你想输出这么一个列表你会怎么做呢?

数据:

1
$cars=array("Volvo","BMW","Toyota","Honda","Mercedes","Opel");

最终结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
<section class="list">
<div>Volvo</div>
<div>BMW</div>
<br>
<div>Toyota</div>
<div>Honda</div>
<br>
<div>Mercedes</div>
<div>Opel</div>
<br>
...
</section>