求高手帮忙,每次上传后返回的网址是qn:,后面的目录和文件却是正确的,不知哪个配置文件要修改?
附目录文件代码:
io.php
<?php
http.php
require_once("http.php");
require_once("auth_digest.php");
// ----------------------------------------------------------
// class Qiniu_PutExtra
class Qiniu_PutExtra
{
public $Params = null;
public $MimeType = null;
public $Crc32 = 0;
public $CheckCrc = 0;
}
function Qiniu_Put($upToken, $key, $body, $putExtra) // => ($putRet, $err)
{
global $QINIU_UP_HOST;
if ($putExtra === null) {
$putExtra = new Qiniu_PutExtra;
}
$fields = array('token' => $upToken);
if ($key === null) {
$fname = '?';
} else {
$fname = $key;
$fields['key'] = $key;
}
if ($putExtra->CheckCrc) {
$fields['crc32'] = $putExtra->Crc32;
}
if ($putExtra->Params) {
foreach ($putExtra->Params as $k=>$v) {
$fields[$k] = $v;
}
}
$files = array(array('file', $fname, $body, $putExtra->MimeType));
$client = new Qiniu_HttpClient;
return Qiniu_Client_CallWithMultipartForm($client, $QINIU_UP_HOST, $fields, $files);
}
function Qiniu_PutFile($upToken, $key, $localFile, $putExtra) // => ($putRet, $err)
{
global $QINIU_UP_HOST;
if ($putExtra === null) {
$putExtra = new Qiniu_PutExtra;
}
if (!empty($putExtra->MimeType)) {
$localFile .= ';type=' . $putExtra->MimeType;
}
$fields = array('token' => $upToken, 'file' => '@' . $localFile);
if ($key === null) {
$fname = '?';
} else {
$fname = $key;
$fields['key'] = $key;
}
if ($putExtra->CheckCrc) {
if ($putExtra->CheckCrc === 1) {
$hash = hash_file('crc32b', $localFile);
$array = unpack('N', pack('H*', $hash));
$putExtra->Crc32 = $array[1];
}
$fields['crc32'] = sprintf('%u', $putExtra->Crc32);
}
if ($putExtra->Params) {
foreach ($putExtra->Params as $k=>$v) {
$fields[$k] = $v;
}
}
$client = new Qiniu_HttpClient;
return Qiniu_Client_CallWithForm($client, $QINIU_UP_HOST, $fields, 'multipart/form-data');
}
// ----------------------------------------------------------
<?php
require_once("auth_digest.php");
// --------------------------------------------------------------------------------
// class Qiniu_Error
class Qiniu_Error
{
public $Err; // string
public $Reqid; // string
public $Details; // []string
public $Code; // int
public function __construct($code, $err)
{
$this->Code = $code;
$this->Err = $err;
}
}
// --------------------------------------------------------------------------------
// class Qiniu_Request
class Qiniu_Request
{
public $URL;
public $Header;
public $Body;
public function __construct($url, $body)
{
$this->URL = $url;
$this->Header = array();
$this->Body = $body;
}
}
// --------------------------------------------------------------------------------
// class Qiniu_Response
class Qiniu_Response
{
public $StatusCode;
public $Header;
public $ContentLength;
public $Body;
public function __construct($code, $body)
{
$this->StatusCode = $code;
$this->Header = array();
$this->Body = $body;
$this->ContentLength = strlen($body);
}
}
// --------------------------------------------------------------------------------
// class Qiniu_Header
function Qiniu_Header_Get($header, $key) // => $val
{
$val = @$header[$key];
if (isset($val)) {
if (is_array($val)) {
return $val[0];
}
return $val;
} else {
return '';
}
}
function Qiniu_ResponseError($resp) // => $error
{
$header = $resp->Header;
$details = Qiniu_Header_Get($header, 'X-Log');
$reqId = Qiniu_Header_Get($header, 'X-Reqid');
$err = new Qiniu_Error($resp->StatusCode, null);
if ($err->Code > 299) {
if ($resp->ContentLength !== 0) {
if (Qiniu_Header_Get($header, 'Content-Type') === 'application/json') {
$ret = json_decode($resp->Body, true);
$err->Err = $ret['error'];
}
}
}
return $err;
}
// --------------------------------------------------------------------------------
// class Qiniu_Client
function Qiniu_Client_incBody($req) // => $incbody
{
$body = $req->Body;
if (!isset($body)) {
return false;
}
$ct = Qiniu_Header_Get($req->Header, 'Content-Type');
if ($ct === 'application/x-www-form-urlencoded') {
return true;
}
return false;
}
function Qiniu_Client_do($req) // => ($resp, $error)
{
$ch = curl_init();
$url = $req->URL;
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_URL => $url['path']
);
$httpHeader = $req->Header;
if (!empty($httpHeader))
{
$header = array();
foreach($httpHeader as $key => $parsedUrlValue) {
$header[] = "$key: $parsedUrlValue";
}
$options[CURLOPT_HTTPHEADER] = $header;
}
$body = $req->Body;
if (!empty($body)) {
$options[CURLOPT_POSTFIELDS] = $body;
}
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
$ret = curl_errno($ch);
if ($ret !== 0) {
$err = new Qiniu_Error(0, curl_error($ch));
curl_close($ch);
return array(null, $err);
}
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
curl_close($ch);
$resp = new Qiniu_Response($code, $result);
$resp->Header['Content-Type'] = $contentType;
return array($resp, null);
}
class Qiniu_HttpClient
{
public function RoundTrip($req) // => ($resp, $error)
{
return Qiniu_Client_do($req);
}
}
class Qiniu_MacHttpClient
{
public $Mac;
public function __construct($mac)
{
$this->Mac = Qiniu_RequireMac($mac);
}
public function RoundTrip($req) // => ($resp, $error)
{
$incbody = Qiniu_Client_incBody($req);
$token = $this->Mac->SignRequest($req, $incbody);
$req->Header['Authorization'] = "QBox $token";
return Qiniu_Client_do($req);
}
}
// --------------------------------------------------------------------------------
function Qiniu_Client_ret($resp) // => ($data, $error)
{
$code = $resp->StatusCode;
$data = null;
if ($code >= 200 && $code <= 299) {
if ($resp->ContentLength !== 0) {
$data = json_decode($resp->Body, true);
if ($data === null) {
$err_msg = function_exists('json_last_error_msg') ? json_last_error_msg() : "error with content:" . $resp->Body;
$err = new Qiniu_Error(0, $err_msg);
return array(null, $err);
}
}
if ($code === 200) {
return array($data, null);
}
}
return array($data, Qiniu_ResponseError($resp));
}
function Qiniu_Client_Call($self, $url) // => ($data, $error)
{
$u = array('path' => $url);
$req = new Qiniu_Request($u, null);
list($resp, $err) = $self->RoundTrip($req);
if ($err !== null) {
return array(null, $err);
}
return Qiniu_Client_ret($resp);
}
function Qiniu_Client_CallNoRet($self, $url) // => $error
{
$u = array('path' => $url);
$req = new Qiniu_Request($u, null);
list($resp, $err) = $self->RoundTrip($req);
if ($err !== null) {
return array(null, $err);
}
if ($resp->StatusCode === 200) {
return null;
}
return Qiniu_ResponseError($resp);
}
function Qiniu_Client_CallWithForm(
$self, $url, $params, $contentType = 'application/x-www-form-urlencoded') // => ($data, $error)
{
$u = array('path' => $url);
if ($contentType === 'application/x-www-form-urlencoded') {
if (is_array($params)) {
$params = http_build_query($params);
}
}
$req = new Qiniu_Request($u, $params);
if ($contentType !== 'multipart/form-data') {
$req->Header['Content-Type'] = $contentType;
}
list($resp, $err) = $self->RoundTrip($req);
if ($err !== null) {
return array(null, $err);
}
return Qiniu_Client_ret($resp);
}
// --------------------------------------------------------------------------------
function Qiniu_Client_CallWithMultipartForm($self, $url, $fields, $files)
{
list($contentType, $body) = Qiniu_Build_MultipartForm($fields, $files);
return Qiniu_Client_CallWithForm($self, $url, $body, $contentType);
}
function Qiniu_Build_MultipartForm($fields, $files) // => ($contentType, $body)
{
$data = array();
$mimeBoundary = md5(microtime());
foreach ($fields as $name => $val) {
array_push($data, '--' . $mimeBoundary);
array_push($data, "Content-Disposition: form-data; name=\"$name\"");
array_push($data, '');
array_push($data, $val);
}
foreach ($files as $file) {
array_push($data, '--' . $mimeBoundary);
list($name, $fileName, $fileBody, $mimeType) = $file;
$mimeType = empty($mimeType) ? 'application/octet-stream' : $mimeType;
$fileName = Qiniu_escapeQuotes($fileName);
array_push($data, "Content-Disposition: form-data; name=\"$name\"; filename=\"$fileName\"");
array_push($data, "Content-Type: $mimeType");
array_push($data, '');
array_push($data, $fileBody);
}
array_push($data, '--' . $mimeBoundary . '--');
array_push($data, '');
$body = implode("\r\n", $data);
$contentType = 'multipart/form-data; boundary=' . $mimeBoundary;
return array($contentType, $body);
}
function Qiniu_escapeQuotes($str)
{
$find = array("\\", "\"");
$replace = array("\\\\", "\\\"");
return str_replace($find, $replace, $str);
}
// --------------------------------------------------------------------------------
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
<?php
require_once("http.php");
define('Qiniu_RSF_EOF', 'EOF');
/**
* 1. 首次请求 marker = ""
* 2. 无论 err 值如何,均应该先看 items 是否有内容
* 3. 如果后续没有更多数据,err 返回 EOF,markerOut 返回 ""(但不通过该特征来判断是否结束)
*/
function Qiniu_RSF_ListPrefix(
$self, $bucket, $prefix = '', $marker = '', $limit = 0) // => ($items, $markerOut, $err)
{
global $QINIU_RSF_HOST;
$query = array('bucket' => $bucket);
if (!empty($prefix)) {
$query['prefix'] = $prefix;
}
if (!empty($marker)) {
$query['marker'] = $marker;
}
if (!empty($limit)) {
$query['limit'] = $limit;
}
$url = $QINIU_RSF_HOST . '/list?' . http_build_query($query);
list($ret, $err) = Qiniu_Client_Call($self, $url);
if ($err !== null) {
return array(null, '', $err);
}
$items = $ret['items'];
if (empty($ret['marker'])) {
$markerOut = '';
$err = Qiniu_RSF_EOF;
} else {
$markerOut = $ret['marker'];
}
return array($items, $markerOut, $err);
}
-------------------------
<?php
require_once("http.php");
// ----------------------------------------------------------
// class Qiniu_RS_GetPolicy
class Qiniu_RS_GetPolicy
{
public $Expires;
public function MakeRequest($baseUrl, $mac) // => $privateUrl
{
$deadline = $this->Expires;
if ($deadline == 0) {
$deadline = 3600;
}
$deadline += time();
$pos = strpos($baseUrl, '?');
if ($pos !== false) {
$baseUrl .= '&e=';
} else {
$baseUrl .= '?e=';
}
$baseUrl .= $deadline;
$token = Qiniu_Sign($mac, $baseUrl);
return "$baseUrl&token=$token";
}
}
function Qiniu_RS_MakeBaseUrl($domain, $key) // => $baseUrl
{
$keyEsc = rawurlencode($key);
return "http://$domain/$keyEsc";
}
// --------------------------------------------------------------------------------
// class Qiniu_RS_PutPolicy
class Qiniu_RS_PutPolicy
{
public $Scope; //必填
public $Expires; //默认为3600s
public $CallbackUrl;
public $CallbackBody;
public $ReturnUrl;
public $ReturnBody;
public $AsyncOps;
public $EndUser;
public $InsertOnly; //若非0,则任何情况下无法覆盖上传
public $DetectMime; //若非0,则服务端根据内容自动确定MimeType
public $FsizeLimit;
public $SaveKey;
public $PersistentOps;
public $PersistentNotifyUrl;
public $Transform;
public $FopTimeout;
public $MimeLimit;
public function __construct($scope)
{
$this->Scope = $scope;
}
public function Token($mac) // => $token
{
$deadline = $this->Expires;
if ($deadline == 0) {
$deadline = 3600;
}
$deadline += time();
$policy = array('scope' => $this->Scope, 'deadline' => $deadline);
if (!empty($this->CallbackUrl)) {
$policy['callbackUrl'] = $this->CallbackUrl;
}
if (!empty($this->CallbackBody)) {
$policy['callbackBody'] = $this->CallbackBody;
}
if (!empty($this->ReturnUrl)) {
$policy['returnUrl'] = $this->ReturnUrl;
}
if (!empty($this->ReturnBody)) {
$policy['returnBody'] = $this->ReturnBody;
}
if (!empty($this->AsyncOps)) {
$policy['asyncOps'] = $this->AsyncOps;
}
if (!empty($this->EndUser)) {
$policy['endUser'] = $this->EndUser;
}
if (!empty($this->InsertOnly)) {
$policy['exclusive'] = $this->InsertOnly;
}
if (!empty($this->DetectMime)) {
$policy['detectMime'] = $this->DetectMime;
}
if (!empty($this->FsizeLimit)) {
$policy['fsizeLimit'] = $this->FsizeLimit;
}
if (!empty($this->SaveKey)) {
$policy['saveKey'] = $this->SaveKey;
}
if (!empty($this->PersistentOps)) {
$policy['persistentOps'] = $this->PersistentOps;
}
if (!empty($this->PersistentNotifyUrl)) {
$policy['persistentNotifyUrl'] = $this->PersistentNotifyUrl;
}
if (!empty($this->Transform)) {
$policy['transform'] = $this->Transform;
}
if (!empty($this->FopTimeout)) {
$policy['fopTimeout'] = $this->FopTimeout;
}
if (!empty($this->MimeLimit)) {
$policy['mimeLimit'] = $this->MimeLimit;
}
$b = json_encode($policy);
return Qiniu_SignWithData($mac, $b);
}
}
// ----------------------------------------------------------
// class Qiniu_RS_EntryPath
class Qiniu_RS_EntryPath
{
public $bucket;
public $key;
public function __construct($bucket, $key)
{
$this->bucket = $bucket;
$this->key = $key;
}
}
// ----------------------------------------------------------
// class Qiniu_RS_EntryPathPair
class Qiniu_RS_EntryPathPair
{
public $src;
public $dest;
public function __construct($src, $dest)
{
$this->src = $src;
$this->dest = $dest;
}
}
// ----------------------------------------------------------
function Qiniu_RS_URIStat($bucket, $key)
{
return '/stat/' . Qiniu_Encode("$bucket:$key");
}
function Qiniu_RS_URIDelete($bucket, $key)
{
return '/delete/' . Qiniu_Encode("$bucket:$key");
}
function Qiniu_RS_URICopy($bucketSrc, $keySrc, $bucketDest, $keyDest)
{
return '/copy/' . Qiniu_Encode("$bucketSrc:$keySrc") . '/' . Qiniu_Encode("$bucketDest:$keyDest");
}
function Qiniu_RS_URIMove($bucketSrc, $keySrc, $bucketDest, $keyDest)
{
return '/move/' . Qiniu_Encode("$bucketSrc:$keySrc") . '/' . Qiniu_Encode("$bucketDest:$keyDest");
}
// ----------------------------------------------------------
function Qiniu_RS_Stat($self, $bucket, $key) // => ($statRet, $error)
{
global $QINIU_RS_HOST;
$uri = Qiniu_RS_URIStat($bucket, $key);
return Qiniu_Client_Call($self, $QINIU_RS_HOST . $uri);
}
function Qiniu_RS_Delete($self, $bucket, $key) // => $error
{
global $QINIU_RS_HOST;
$uri = Qiniu_RS_URIDelete($bucket, $key);
return Qiniu_Client_CallNoRet($self, $QINIU_RS_HOST . $uri);
}
function Qiniu_RS_Move($self, $bucketSrc, $keySrc, $bucketDest, $keyDest) // => $error
{
global $QINIU_RS_HOST;
$uri = Qiniu_RS_URIMove($bucketSrc, $keySrc, $bucketDest, $keyDest);
return Qiniu_Client_CallNoRet($self, $QINIU_RS_HOST . $uri);
}
function Qiniu_RS_Copy($self, $bucketSrc, $keySrc, $bucketDest, $keyDest) // => $error
{
global $QINIU_RS_HOST;
$uri = Qiniu_RS_URICopy($bucketSrc, $keySrc, $bucketDest, $keyDest);
return Qiniu_Client_CallNoRet($self, $QINIU_RS_HOST . $uri);
}
// ----------------------------------------------------------
// batch
function Qiniu_RS_Batch($self, $ops) // => ($data, $error)
{
global $QINIU_RS_HOST;
$url = $QINIU_RS_HOST . '/batch';
$params = 'op=' . implode('&op=', $ops);
return Qiniu_Client_CallWithForm($self, $url, $params);
}
function Qiniu_RS_BatchStat($self, $entryPaths)
{
$params = array();
foreach ($entryPaths as $entryPath) {
$params[] = Qiniu_RS_URIStat($entryPath->bucket, $entryPath->key);
}
return Qiniu_RS_Batch($self,$params);
}
function Qiniu_RS_BatchDelete($self, $entryPaths)
{
$params = array();
foreach ($entryPaths as $entryPath) {
$params[] = Qiniu_RS_URIDelete($entryPath->bucket, $entryPath->key);
}
return Qiniu_RS_Batch($self, $params);
}
function Qiniu_RS_BatchMove($self, $entryPairs)
{
$params = array();
foreach ($entryPairs as $entryPair) {
$src = $entryPair->src;
$dest = $entryPair->dest;
$params[] = Qiniu_RS_URIMove($src->bucket, $src->key, $dest->bucket, $dest->key);
}
return Qiniu_RS_Batch($self, $params);
}
function Qiniu_RS_BatchCopy($self, $entryPairs)
{
$params = array();
foreach ($entryPairs as $entryPair) {
$src = $entryPair->src;
$dest = $entryPair->dest;
$params[] = Qiniu_RS_URICopy($src->bucket, $src->key, $dest->bucket, $dest->key);
}
return Qiniu_RS_Batch($self, $params);
}
// ----------------------------------------------------------
-------------------------
-------------------------
评论
全部评论 (0)
评论
全部评论 (0)