思路:
1.验证是不是图片,大小有没有超过限制;
2.临时文件是否上传成功;
3.返回成功或者失败信息.
代码:
use Storage;
use Validator;
public function uploadImage(Request $request)
{
$validator = Validator::make($request->all(), [
'image' => 'required|image|max:300',
]);
if ($validator->fails()) {
$first_error = $validator->errors()->first();
return $this->outPutJson('', 201, $first_error);
}
$file = $request->file('image');
// 文件是否上传成功
if ($file->isValid()) {
// 获取文件相关信息
$originalName = $file->getClientOriginalName(); // 文件原名
$ext = $file->getClientOriginalExtension(); // 扩展名
$realPath = $file->getRealPath(); //临时文件的绝对路径
$type = $file->getClientMimeType(); // audio/wave
// 上传文件
$filename = date('YmdH_i_s') . '_' . uniqid() . '.' . $ext;
$save_path = 'recordings';
//保存文档到本地
$file_path = $file->storeAs($save_path, $filename, 'public');
$local_real_path = storage_path('app/public/' . $file_path); #存储的真实物理路径
#网络访问地址
$access_url = Storage::disk('public')->url($save_path . '/' . $filename);
return $this->outPutJson($access_url);
}
return $this->outPutJson('', 500, '文件上传失败!');
}