12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- /**
- *
- *User:Administrator
- *Date:2021/10/10
- */
- namespace app\common\lib\upload;
- use app\api\exception\ApiException;
- use OSS\Core\OssException;
- use OSS\OssClient;
- class AliyunOss
- {
- public function Upload(){
- $name = $_FILES['file']['name'];//1.png
- $tmp_name = $_FILES['file']['tmp_name'];//C:\Users\Administrator\AppData\Local\Temp\phpD08.tmp
- $error = $_FILES['file']['error'];
- //过滤错误(临时测试时使用,代码写的比较简陋)
- if ($error) {
- switch ($error) {
- case 1 :
- $error_message = '您上传的文件超过了PHP.INI配置文件中UPLOAD_MAX-FILESIZE的大小';
- break;
- case 2 :
- $error_message = '您上传的文件超过了PHP.INI配置文件中的post_max_size的大小';
- break;
- case 3 :
- $error_message = '文件只被部分上传';
- break;
- case 4 :
- $error_message = '文件不能为空';
- break;
- default :
- $error_message = '未知错误';
- }
- die($error_message);
- }
- //文件名生成
- $arr_name = explode('.', $name);// [0 => "1" , 1 => "png"]
- //源文件的后缀
- $extension = end($arr_name); //png
- /**
- * 判断上传文件是否合法
- * 判断截取上传文件名是否为
- * jpeg,jpg,png其中之一
- */
- if (!in_array($extension, array("jpeg", "jpg", "png", "PNG", "JPG", "JPEG","pdf","PDF","XLS","xls","doc","DOC","docx","xlsx"))) {
- return show(-2, '上传文件不合法');
- }
- // try {
- // validate(['file' => ['fileSize:2*1024*1024']])->check(['file' => $file]);
- // } catch (ValidateException $e) {
- // $return['msg'] = $e->getMessage();
- //
- // }
- //新的文件名
- $new_name = $name;//1.png
- //文件在OSS上的URL
- $url=config('upload.aliyun_oss_save_path_syjc').$new_name;
- //抛出异常
- try{
- //相比传统的操作,其实就多了两个步骤
- //第一步是根据上面的参数实例化一个对象
- $ossClient = new OssClient(
- config('upload.aliyun_oss_accessKeyId_syjc'),
- config('upload.aliyun_oss_accessKeySecret_syjc'),
- config('upload.aliyun_oss_endpoint_syjc')
- );
- //这一步相当于之前把临时文件移入到设置的地址那步,只是以前的是自己的服务器上,现在是OSS;
- $result =$ossClient->uploadFile(config('upload.aliyun_oss_bucket_syjc'),$url,$tmp_name);
- //返回的参数
- if (isset($result['info']['http_code']) AND $result['info']['http_code']==200) {
- $arr=[
- 'fileName' => $new_name,
- 'fileUrl' => $result['info']['url']
- ];
- return showSuccess($arr);
- }else{
- return show('3', '上传失败');
- }
- } catch(OssException $e) {
- return config($e->getCode(), $e->getMessage());
- }
- }
- }
|