/**
  * @title 获取七牛上传token
  *
  * @param string $ext 文件后缀 '' 例如jpg、png
  * @method get
  */
 public function uploadToken($ext = '')
 {
     $bucket = 'yszjdx';
     $expires = 3600;
     $ext = strtolower($ext);
     preg_match('/^[a-z]+$/', $ext) or ajax_error('文件后缀不正确!');
     $file_name = 'mobile_' . date('YmdH') . '_' . uniqid() . '.' . $ext;
     $scope .= ':' . $file_name;
     $policyFields = array('callbackUrl', 'callbackBody', 'callbackHost', 'callbackBodyType', 'callbackFetchKey', 'returnUrl', 'returnBody', 'endUser', 'saveKey', 'insertOnly', 'detectMime', 'mimeLimit', 'fsizeLimit', 'persistentOps', 'persistentNotifyUrl', 'persistentPipeline');
     $policy = [];
     $originPolicy = [];
     foreach ($originPolicy as $key => $value) {
         if (in_array($key, $policyFields)) {
             $policy[$key] = $value;
         }
     }
     $policy['scope'] = $bucket . ':' . $file_name;
     $policy['deadline'] = time() + $expires;
     $data = json_encode($policy);
     function base64_urlSafeEncode($data)
     {
         $find = array('+', '/');
         $replace = array('-', '_');
         return str_replace($find, $replace, base64_encode($data));
     }
     $data = base64_urlSafeEncode($data);
     $qiniu = C('UPLOAD_TYPE_CONFIG');
     $hmac = hash_hmac('sha1', $data, $qiniu['secrectKey'], true);
     $signData = $qiniu['accessKey'] . ':' . base64_urlSafeEncode($hmac);
     $token = $signData . ':' . $data;
     ajax_success(['file_name' => $file_name, 'token' => $token]);
 }
Beispiel #2
0
/**
 * 计算七牛API中的数据格式
 *
 * @param $bucket 待操作的空间名        	
 * @param $key 待操作的文件名        	
 *
 * @return 符合七牛API规格的数据格式
 * @link http://developer.qiniu.com/docs/v6/api/reference/data-formats.html
 */
function entry($bucket, $key)
{
    $en = $bucket;
    if (!empty($key)) {
        $en = $bucket . ':' . $key;
    }
    return base64_urlSafeEncode($en);
}
Beispiel #3
0
 public function createToken()
 {
     self::$app_key = config('config')->get('file_cloud')['key'];
     $request = ['deadline' => time() + 24 * 3600];
     $putPolicy = json_encode($request);
     $encodedPutPolicy = base64_urlSafeEncode($putPolicy);
     $sign = hash_hmac('sha1', $encodedPutPolicy, self::$app_key['secret'], true);
     $encodedSign = base64_urlSafeEncode($sign);
     $uploadToken = self::$app_key['access_key'] . ':' . $encodedSign . ':' . $encodedPutPolicy;
     return $uploadToken;
 }
 public function uploadToken()
 {
     $expires = 600;
     $ext = pathinfo(I('filename'), PATHINFO_EXTENSION);
     if (!in_array(strtolower($ext), ['png', 'jpg', 'jpeg', 'gif'])) {
         system_warn('检测到错误的上传图片格式:' . I('filename') . ',提交参数:' . print_r($_REQUEST, true));
         ajax_error(strpos(I('filename'), '.') > 0 ? '仅限上传png/jpg/gif图片' : '服务器无法读取图片格式!');
     }
     $file_name = (I('type') ?: 'loan') . '_auth_' . date('YmdH') . '_' . uniqid() . '.' . $ext;
     $policy['scope'] = 'yszjdx:' . $file_name;
     $policy['deadline'] = time() + $expires;
     $policy['fsizeLimit'] = 5 * 1024 * 1024;
     $policy = json_encode($policy);
     function base64_urlSafeEncode($data)
     {
         $find = array('+', '/');
         $replace = array('-', '_');
         return str_replace($find, $replace, base64_encode($data));
     }
     $policy = base64_urlSafeEncode($policy);
     $qiniu = C('UPLOAD_TYPE_CONFIG');
     $sign = hash_hmac('sha1', $policy, $qiniu['secrectKey'], true);
     $token = $qiniu['accessKey'] . ':' . base64_urlSafeEncode($sign) . ':' . $policy;
     ajax_success(['file_name' => $file_name, 'token' => $token]);
 }