分享
  1. 首页
  2. 文章

七牛云存储list列出文件简单demo(php版本和golang演示)

widuu · · 2397 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

看到了七牛官网上很多问list这个API如何用?或者说人们看不懂,我用简单的例子或者demo来简单的给大家看看
这个如何用!一个php版本一个golang的简单demo!

golang版本

package main
import (
 "crypto/hmac"
 "crypto/sha1"
 "encoding/base64"
 "fmt"
 "io/ioutil"
 "net/http"
 "strings"
)
const (
 SK = "D-K57TE5hPe3krexftxLWFKmL2xbQEKA-mtkrUfB"
 AK = "KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR"
 HOST = "rsf.qbox.me"
)
func main() {
 mac := hmac.New(sha1.New, []byte(SK))
 mac.Write([]byte("/list?bucket=gitwiduu&limit=20\n"))
 a := mac.Sum(nil)
 client := &http.Client{}
 u := base64.StdEncoding.EncodeToString([]byte(a))
 u = strings.Replace(u, "+", "-", -1)
 u = strings.Replace(u, "/", "_", -1)
 request, _ := http.NewRequest("POST", "http://rsf.qbox.me/list?bucket=gitwiduu&limit=20", nil)
 request.Header.Set("Content-Type", "application/x-www-form-urlencoded; param=value")
 request.Header.Set("Host", HOST)
 request.Header.Set("Connection", "keep-alive")
 request.Header.Set("Authorization", "QBox "+AK+":"+u)
 response, _ := client.Do(request)
 if response.StatusCode == 200 {
 data, _ := ioutil.ReadAll(response.Body)
 fmt.Println(string(data))
 }
 fmt.Println("ok")
}

php 版本

<?php
/*
 * +----------------------------------------------------------------------
 * | 七牛列出文件
 * +----------------------------------------------------------------------
 * | Author: widuu <admin@widuu.com>
 * +----------------------------------------------------------------------
 * | Time : 09/11/2014
 * +----------------------------------------------------------------------
 *
**/
require('conf.php');
define('AKEY', $accessKey);
define('SKEY', $secretKey);
define('BUCKET',$bucket);
class Qiniu_List{
 private $QINIU_RSF_HOST = 'http://rsf.qbox.me';
 private $header = array();
 private $url = '';
 private static $instance;
 private function __construct(){}
 //单态模式实例化
 public static function getInstance() {
 if(!isset(self::$instance)){
 $c = __CLASS__;
 self::$instance = new $c;
 }
 return self::$instance;
 }
 /**
 * @param prefix 前缀
 * @param marker 标记
 * @param limit 限制出现的个数
 *
 **/
 public function getUrl($prefix='', $marker='', $limit = 0){
 $query = @array('bucket' => BUCKET); 
 if (!empty($prefix)) {
 $query['prefix'] = $prefix;
 }
 if (!empty($marker)) {
 $query['marker'] = $marker;
 }
 if (!empty($limit)) {
 $query['limit'] = $limit;
 }
 $url = '/list?' . http_build_query($query);
 $this->url = $url;
 }
 //获取token
 private function getToken($url){
 $find = array('+', '/');
 $replace = array('-', '_');
 $sign = hash_hmac('sha1', $this->url."\n", SKEY, true);
 $result = AKEY . ':' . str_replace($find, $replace, base64_encode($sign));
 return $result; 
 }
 /**
 * @Description 列出文件
 * @return array(
 * ['marker'] => 标记,
 * ['item'] => 文件列表数组
 * )
 **/
 public function listFiles(){
 $_post_url = trim($this->QINIU_RSF_HOST.$this->url,'\n'); 
 $curl = curl_init ();
 curl_setopt($curl, CURLOPT_URL, $_post_url);
 $this->header[] = 'Host: rsf.qbox.me';
 $this->header[] = 'Content-Type:application/x-www-form-urlencoded';
 $this->header[] = 'Authorization: QBox '.$this->getToken($this->url); 
 curl_setopt ( $curl, CURLOPT_HEADER, false);
 curl_setopt ( $curl, CURLOPT_HTTPHEADER, $this->header );
 curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, false); 
 curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, false); 
 curl_setopt ( $curl, CURLOPT_POST, true);
 curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, true); 
 curl_setopt ( $curl, CURLOPT_POSTFIELDS, ""); 
 $result = curl_exec ( $curl ); 
 curl_close ( $curl ); 
 return json_decode($result,true); 
 }
}
//演示方法
$Qiniu_List = Qiniu_List::getInstance();
$Qiniu_List -> getUrl('','',20);
echo "<pre>";
print_r($Qiniu_List -> listFiles());
echo "</pre>";

未经允许,不得转载本站任何文章:微度网络 » 七牛云存储list列出文件简单demo(php版本和golang演示)


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
2397 次点击
1 回复 | 直到 2025年05月12日 09:00:44
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏