基于tp3.2的白山云的上传

 

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();
    }




}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值