You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.0 KiB
61 lines
2.0 KiB
<?php
|
|
|
|
namespace App\Http\Controllers\Mobile;
|
|
|
|
use App\Helpers\ResponseCode;
|
|
use App\Models\Upload;
|
|
use Illuminate\Http\Request;
|
|
|
|
class UploadController extends CommonController
|
|
{
|
|
|
|
/**
|
|
* @OA\Post(
|
|
* path="/api/mobile/upload-file",
|
|
* tags={"小程序-其他"},
|
|
* summary="上传文件",
|
|
* description="",
|
|
* @OA\Parameter(name="file", in="query", @OA\Schema(type="file"), required=true, description="文件"),
|
|
* @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"),
|
|
* @OA\Response(
|
|
* response="200",
|
|
* description="暂无"
|
|
* )
|
|
* )
|
|
*/
|
|
public function uploadFile(Request $request)
|
|
{
|
|
$file = $request->file('file');
|
|
//获取文件大小,单位B
|
|
$fileSize = floor($file->getSize());
|
|
if ($fileSize >= 50 * 1024 *1024) {
|
|
return $this->fail([ResponseCode::ERROR_BUSINESS, '文件必须小于50M']);
|
|
}
|
|
//过滤文件后缀
|
|
$ext = $file->getClientOriginalExtension();
|
|
if (in_array($ext, ['zip','rar','ppt','pptx','xls','xlsx','doc','docx','png','gif','jpg','jpeg','pdf','mp4'])) {
|
|
// 保存目录
|
|
$dir = 'files';
|
|
// 文件名
|
|
$fileName = time() . uniqid() . '.' . $ext;
|
|
$file->storeAs($dir,$fileName,['disk'=>'public']);
|
|
// 写入上传文件记录表
|
|
$list = [
|
|
'original_name'=>$file->getClientOriginalName(),
|
|
'folder'=>'storage/'.$dir,
|
|
'name'=>$fileName,
|
|
'extension'=>$ext,
|
|
'size'=>$fileSize,
|
|
'creator_id'=>$this->getUserId(),
|
|
'created_at'=>date('Y-m-d H:i:s')
|
|
];
|
|
$id = Upload::insertGetId($list);
|
|
$uploadFile = Upload::find($id);
|
|
return $this->success($uploadFile);
|
|
} else {
|
|
return $this->fail([ResponseCode::ERROR_BUSINESS, '文件格式错误']);
|
|
}
|
|
}
|
|
|
|
}
|