/** * @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]); }
/** * 计算七牛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); }
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]); }