求高手帮忙,每次上传后返回的网址是qn:,后面的目录和文件却是正确的,不知哪个配置文件要修改?
附目录文件代码:
io.php
<?phphttp.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);
}
// ----------------------------------------------------------
-------------------------
-------------------------