Amazon S3
使用 Amazon S3 可以通过一个具备高扩展性、可靠性、安全性和快速价廉的数据存储基础设施随时存储和检索任何数量的数据,Amazon 使用这个相同的基础设施来运行其全球网站网络。
废话不多说开始上代码
https://docs.aws.amazon.com/zh_cn/s3/?id=docs_gateway use Aws\S3\S3Client; use Aws\Exception\AwsException;
class AwsuplodsController extends BaseController { public function sharedConfig() { $sharedConfig = [ 'version' => 'latest', 'region' => 'us-east-1', 'credentials' => [ 'key' => '****', //请替换为您自己的access_key 'secret' => '****', //请替换为您自己的secret_key ], 'endpoint' => 'http://ss.bscstorage.com', ]; return $sharedConfig; } //创建文件上传 public function tools_create_file() { $cli = new \Aws\Sdk($this->sharedConfig()); $client = $cli->createS3(); $bucket = 'img.bc.haodanku.com'; //获取参数 $key_data = $key = I("post.key"); if (!empty($key)) { $Key_url = $key . "/" . time(); } else { $Key_url = time(); } $remark = I("remark");//文件备注 //获取上传的路径 $content_type = $_FILES['url_upload']['type']; $source_name = $_FILES['url_upload']['name'];//原文件名 $localhost_img = $_FILES['url_upload']['tmp_name']; $source_name_suffix = pathinfo($source_name); $source_suffix = $source_name_suffix['extension']; //$localhost_img = "C:/Users/Administrator/Desktop/测试图片/555.png"; $resp = $client->putObject([ 'ACL' => 'public-read-write', 'Bucket' => $bucket, 'Key' => $Key_url, 'ContentType' => $content_type, //请替换为合适的文件类型 'SourceFile' => $localhost_img, ]); //dump($resp); if ($resp['@metadata']['statusCode'] == 200) { $M_haodanku_update_file = M('haodanku_update_file'); $data['url'] = "http://img.bc.haodanku.com/".$Key_url;//asw 地址路径 $data['source_name'] = $source_name;//原文件名 $data['source_suffix'] = $source_suffix;//后缀 $data['remark'] = $remark;//原文件名 $data['type'] = 1; $data['update_dir'] = $key_data;//上传目录 $data['create_time'] = time();//创建时间 $data['etag'] = $resp['ETag']; $data['key_url'] = $Key_url; $data['admin_id'] = $this->admin_id;//审核人 $data['aws_url'] = $resp['@metadata']['effectiveUri'];//审核人 //json 数组拼接 $effectiveUri = $resp['@metadata']['effectiveUri']; $content_type = $resp['@metadata']['headers']['content-type']; $x_amz_request_id = $resp['@metadata']['headers']['x-amz-request-id']; $x_amz_s2_requester = $resp['@metadata']['headers']['x-amz-s2-requester']; $date = $resp['@metadata']['headers']['date']; $etag = $resp['@metadata']['headers']['etag']; $meta_data = array("effectiveUri" => $effectiveUri, "content_type" => $content_type, "x_amz_request-id" => $x_amz_request_id, "x_amz_s2_requester" => $x_amz_s2_requester, "date" => $date, "etag" => $etag ); $meta_data = json_encode($meta_data, true); $data['meta_data'] = $meta_data; $M_aws_file_add = $M_haodanku_update_file->add($data); if ($M_aws_file_add) { // echo json_encode(array('code' => 200, 'msg' => '上传入库成功', 'data' => ""), JSON_UNESCAPED_UNICODE); // exit; $this->success('上传入库成功', U('Awsuplods/bucket_select'),3); } else { // echo json_encode(array('code' => 0, 'msg' => '上传入库失败', 'data' => ""), JSON_UNESCAPED_UNICODE); // exit; $this->error('上传入库失败', U('Awsuplods/bucket_select'),3); } // echo $resp['@metadata']['effectiveUri'] . "<br>"; } else { // echo json_encode(array('code' => 0, 'msg' => '上传失败', 'data' => ""), JSON_UNESCAPED_UNICODE); // exit; $this->error('上传失败', U('Awsuplods/bucket_select'),3); } } //删除文件 public function del_aws() { $cli = new \Aws\Sdk($this->sharedConfig()); $client = $cli->createS3(); $key_url_data = $Key_url =I("post.key_url"); $bucket = 'img.bc.haodanku.com'; $resp = $client->deleteObject([ 'Bucket' => $bucket, 'Key' => $Key_url, ]); $M_haodanku_update_file = M('haodanku_update_file'); $M_aws_file_del = $M_haodanku_update_file->where(array('key_url' => $key_url_data))->delete(); if ($M_aws_file_del) { echo json_encode(array('code' => 1, 'msg' => '删除成功', 'data' => ""), JSON_UNESCAPED_UNICODE); exit; } else { echo json_encode(array('code' => 0, 'msg' => '删除失败', 'data' => ""), JSON_UNESCAPED_UNICODE); exit; } } //查询文件 public function bucket_select() { $M_haodanku_update_file = M('haodanku_update_file'); $key_dir = I('key_dir'); if(!empty($key_dir)){ $M_aws_file_select_count = $M_haodanku_update_file->where(array('update_dir'=>$key_dir))->count(); $Page = new \Think\Page($M_aws_file_select_count,20); $show = $Page->show(); $M_aws_file_select = $M_haodanku_update_file->where(array('update_dir'=>$key_dir))->limit($Page->firstRow . ',' . $Page->listRows)->order('id desc')->select(); }else{ $M_aws_file_select_count = $M_haodanku_update_file->count(); $Page = new \Think\Page($M_aws_file_select_count,20); $show = $Page->show(); $M_aws_file_select = $M_haodanku_update_file->limit($Page->firstRow . ',' . $Page->listRows)->order('id desc')->select(); } $this->assign('key_dir',$key_dir); $this->assign('page',$show); $this->assign('title','上传列表'); $this->assign('ws_file_select',$M_aws_file_select); $this->display(); } public function index() { $this->assign('title', '上传白山云'); $this->display(); } }