Lumen 上传文件和使用配置

Lumen upload file

我的做法是在 config 中添加一個 upload.php 文件 ,添加

1
2
3
4
5
6
7
<?php
return [
'upload' => [
'dir' => env('UPLOAD_DIR','/opt/lampp/htdocs/project/public/uploads/'),
'url' => env('UPLOAD_URL','http://localhost/project/public/uploads/')
]
];

bootstrap/app.php 中 添加一行 $app->configure('upload');

上傳的代碼如:

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
27
28
29
30
31
public function upload(Request $request)
{
//判断请求中是否包含name=file的上传文件
if (!$request->hasFile('file')){
return $this->responseError('請選擇文件');
}
// 判断图片上传中是否出错
$file = $request->file('file');
if (!$file->isValid()) {
return $this->responseError('上傳出現問題,請重試');
}
$entension = $file->getClientOriginalExtension(); // 上传文件后缀
$filename = uniqid().mt_rand(1000,9999); // 重命名文件
if(!empty($entension)){
$filename .= '.'.$entension;
}
$dir = config('upload.upload.dir');
$dateDir = date('ymd'); //日期子文件夾
if(!is_dir($dir.$dateDir)){
mkdir($dir.$dateDir);
chmod(755,$dir.$dateDir);
}
$host = url('/');
$file->move($dir.$dateDir.'/',$filename); // 重命名保存
$img_path = $host.'/uploads/'.$dateDir.'/'.$filename;
return $this->responseSuccess(array(
'url'=>$img_path,
'host'=>$host,
'image'=>substr($img_path,strpos($img_path,'upload')))
);
}

Lumen use config

bootstrap/app.php 中,
添加 $app->configure('times');,就會加載到 config/times.php 這個配置文件了

Reference
  1. lumen框架中使用自定义配置文件的方法