七牛云上传注意

作者: 9ac64e1f7a99 | 来源:发表于2017-03-28 23:59 被阅读128次

    !!!!!!!!重要的事情说无数遍!!!!!!!!

                不要把AK SK放在客户端
    
                不要把AK SK放在客户端
    
                不要把AK SK放在客户端
    
    !!!!!!!!重要的事情说无数遍!!!!!!!!
    

    放松

    很简单就能实现文件上传,七牛的文档可以把你看晕,但只要注意几点就可以轻松解决

    七牛

    七牛的文件存储方式是k-v形式,没有目录结构,/a/b/c/bd.jpg其中的/a/b是自己构想的路径分割符,实际不存在,

    token的获取

    在浏览器或者手机app上面实现上传功能,都选择从服务器获取token的方式,不推荐从服务端上传,图片的信息可以用js获取到,不用传到服务器由服务器获取之后再处理

    上传的实现

    客户端获取到token之后,附带上配置选项发送到七牛的服务器端,客户端接收上传的反馈,依据反馈做出相应的处理。

    上传时key的生成

    比较随意,保证唯一性即可,使用uuid v4加上时间戳生成,保证了唯一性和安全性,v1存在一定的安全问题不推荐,具体原因移步 UUID的意义和作用,图片名由自己在客户端生成,发送到七牛和自己的服务器

    php产生token代码

    token只要按照 上传凭证 的说明生成即可,这里借用了php-sdk中的生成方式,以免自己找麻烦

    use  Qiniu\Auth;
    //...
    $putPolicy = [
      'insertOnly' => 1,            //这里不能用true
      'fsizeLimit' => 52428800,     //50M
      'mimeLimit' =>'image/*',
      'returnBody' => json_encode([ //这里也要编码一次,returnBody的值整体是一个json字符串也可以
        'name' => '$(fname)',       //原始文件名
        'size' => '$(fsize)',
        'w' => '$(imageInfo.width)',
        'h' => '$(imageInfo.height)',
        'hash' => '$(etag)',
        'key' => '$(key)',          //上传的时候的文件名
        'mimeType' => '$(mimeType)',//mime类型
      ])
    ];
    $auth = new Auth('你的AK', '你的SK');
    $token = $auth->uploadToken('你的Bucket名,在对象存储中获得', null, 600, $putPolicy);
    //token生成之后可以直接返回给客户端了
    

    客户端上传实现

    POST上传

    分析表单的上传过程,POST请求地址编码方式keytokenfile

    Demo

    1. 表单提交
    2. 表单加FormData提交
    3. 纯FormData提交

    相关

    相关文章

      网友评论

      • 0a105caa3c54:你好,有安卓文件批量分片上传的吗?

      本文标题:七牛云上传注意

      本文链接:https://www.haomeiwen.com/subject/fjqdottx.html