七牛上传凭证怎样自己写

Qiniu 七牛问题解答

很多人反应上传凭证自己书写的时候出现很多问题。这里我给大家一个范例

问题解决方案

此段代码为c#案例,生成token

ak,sk需要创建七牛账户,并在空间秘钥中获取。

 public String getToken()
        {

            Policy policy = new Policy("liuhanlin-work");
          //  policy.Deadline=1390528576;
          //  policy.PersistentNotifyUrl="";
           // policy.Scope = "liuhanlin-work:-123456.jpg";
           // policy.PersistentOps="avthumb/mp4";
           // policy.Scope = "liuhanlin-work";
          //  policy.SaveKey = "Chrysanthemum,c_fill,w_60,h_90.jpg";
           // policy.InsertOnly = 1;
            policy.ReturnBody = "location=$(x:hello)";
            Putpolicy = policy.ToString();
            System.Console.WriteLine(Putpolicy);
            encodedPutPolicy = setting.Bs64(Putpolicy);
            System.Console.WriteLine(encodedPutPolicy);
            encodedSign=setting.token_sign(encodedPutPolicy);
            System.Console.WriteLine(encodedSign);
            Token = setting.AK + ‘:‘+ encodedSign + ":"+ encodedPutPolicy;
            return Token;
        }

签名方法token_sign

 public static string  token_sign(string s)
        {
            System.Text.Encoding encoding = System.Text.Encoding.UTF8;
            byte[] bytesSK = encoding.GetBytes(SK);
            HMACSHA1 hmac = new HMACSHA1(bytesSK);
            byte[] ss = encoding.GetBytes(s);
            byte[] digest = hmac.ComputeHash(ss);
            s = Convert.ToBase64String(digest);
            s = s.Replace(‘+‘, ‘-‘).Replace(‘/‘, ‘_‘);
            return s;
        }

上传策略policy类的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Runtime.Serialization;

namespace WebApplication1.IO
{
    public class Policy
    {
        private string scope = "";

        public string Scope
        {
            get { return scope; }
            set { scope = value; }
        }
        private Int64 deadline = 0;

        public Int64 Deadline
        {
            get { return deadline; }
            set { deadline = value; }
        }
        private int insertOnly = 0;

        public int InsertOnly
        {
            get { return insertOnly; }
            set { insertOnly = value; }
        }
        private string saveKey = "";

        public string SaveKey
        {
            get { return saveKey; }
            set { saveKey = value; }
        }
        private string endUser = "";

        public string EndUser
        {
            get { return endUser; }
            set { endUser = value; }
        }
        private string returnUrl = "";

        public string ReturnUrl
        {
            get { return returnUrl; }
            set { returnUrl = value; }
        }
        private string returnBody = "";

        public string ReturnBody
        {
            get { return returnBody; }
            set { returnBody = value; }
        }
        private string callbackUrl = "";

        public string CallbackUrl
        {
            get { return callbackUrl; }
            set { callbackUrl = value; }
        }
        private string callbackBody = "";

        public string CallbackBody
        {
            get { return callbackBody; }
            set { callbackBody = value; }
        }
        private string persistentOps = "";

        public string PersistentOps
        {
            get { return persistentOps; }
            set { persistentOps = value; }
        }
        private string persistentNotifyUrl = "";

        public string PersistentNotifyUrl
        {
            get { return persistentNotifyUrl; }
            set { persistentNotifyUrl = value; }
        }
        private string persistentPipeline = "";

        public string PersistentPipeline
        {
            get { return persistentPipeline; }
            set { persistentPipeline = value; }
        }
        private string mimeLimit = "";

        public string MimeLimit
        {
            get { return mimeLimit; }
            set { mimeLimit = value; }
        }
        private int detectMime = 0;

        public int DetectMime
        {
            get { return detectMime; }
            set { detectMime = value; }
        }
        private Int64 fsizeLimit = 0;

        public Int64 FsizeLimit
        {
            get { return fsizeLimit; }
            set { fsizeLimit = value; }
        }
        private UInt32 expires = 0;

        public UInt32 Expires
        {
            get { return expires; }
            set { expires = value; }
        }

        private UInt32 callbackFetchKey = 0;

        public UInt32 CallbackFetchKey
        {
            get { return callbackFetchKey; }
            set { callbackFetchKey = value; }
        }
        private string callbackBodyType = "";

        public string CallbackBodyType
        {
            get { return callbackBodyType; }
            set { callbackBodyType = value; }
        }
        public Policy(string scope, UInt32 exp = 3600)
        {
            Scope = scope;
            this.Expires = exp;
            this.deadline = (UInt32)((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000)/10000000 + (long)exp);

        }

        public  override string ToString()
{
             return setting.setjson(this);
}

    }
}

结果演示

结果这里不演示了,代码是可以直接用的。已经测试无数遍了。有需要的客户可以按照这样去自己写一遍,其实七牛有很完备的sdk去封装大部分的功能。

sdk地址 : http://developer.qiniu.com/docs/v6/sdk/

各种语言都有。

时间: 2024-10-09 21:00:25

七牛上传凭证怎样自己写的相关文章

iOS 客户端获取七牛上传token

一.官方参考文档: 1.上传策略http://developer.qiniu.com/article/developer/security/put-policy.html 2.上传凭证(即uptoken)http://developer.qiniu.com/article/developer/security/upload-token.html 3.下载凭证http://developer.qiniu.com/article/developer/security/download-token.h

七牛上传视频添加到队列时视频大小是否添加

最近在做视频分析的项目,遇到了一些关于七牛上传视频文件的问题. 当 选择的视频文件 大于 本地剩余空间 时,则取消上传. 'FilesAdded': function(up, files) { plupload.each(files, function(file,index) { //重点在这里 var fileSize=0; for(var i=0;i<files.length;i++){ fileSize+= Math.ceil(files[i].size/1024/1024); }; //

JS实现七牛上传

七牛有js上传的文档和模板,但怒我直言,写得真烂,文档如下 https://developer.qiniu.com/kodo/sdk/1283/javascript 首先要引入三个js文件,plupload.full.min.js,qiniu.min.js,main.js 这些东西要去七牛模板文件里面找,第一个好像是在plupload官网下载,plupload是一个js库 然后复制下面这段代码,改好里面的参数,就能用了 //////////////////////////////////// /

七牛上传视频并转码

/// <summary> /// 上传视频到七牛并转码 /// </summary> /// <param name="saveKey"></param> /// <param name="localFile"></param> public static void UpLoadVideo(string saveKey, string localFile) { Mac mac = new Ma

在七牛上传之后如何自己自定义上传完成处理并在页面显示。

Qiniu 七牛问题解答 很多用户不懂怎么写上传完成后的处理事件.我带大家来写个. 问题解决方案 1,首先要在如下的main.js中做如下的配置修改. /*global Qiniu */ /*global plupload */ /*global FileProgress */ /*global hljs */ $(function() { var uploader = Qiniu.uploader({ runtimes: 'html5,flash,html4', browse_button:

七牛---以一个七牛上传的实例小结下AJAX跨域【转】

http://blog.csdn.net/netdxy/article/details/50699842 使用七牛过程中,很多用户或多或少遇到跨域的问题,这篇文章主要介绍下跨域的概念来看什么情况下会出现跨域以及七牛关于跨域的策略. 关于跨域的,说白点就是去别服务器上取东西,域当然是别的服务器,只要协议.域名.端口有任何一个不同,都被当作是不同的域.这里以表单上传结合AJAX请求获取Token上传的Demo为切入点具体看下什么时候会出现跨域. 以下是Demo的代码示例,需要注意的是请求token的

关于七牛上传701错误码解释

Qiniu 七牛问题解答 上传返回701错误码 问题解决方案 使用同一个cxt,上传成功后,再使用该cxt上传一个不同内容的chunk.会返回: {"error":"conflict with uploaded data, please retry"}. cxt 过期(7天), 会返回错误:{"error":"expired context create at 1419069271973950431"}. 内部多个服务不可用.

七牛上传同名文件为什么没有报错解答

有很多七牛的新用户,会遇到这样一个问题,上传代码中指定了scope为 scope="bucketname" 但是上传一个同样的文件,文件名字也一样,文件的key也一样的文件,没有报已经存在同名资源则会失败的消息. 问题解答 七牛只有在同名文件,不同文件资源的时候才会报614状态码,也就是文件资源已经存在的消息.否则同样会返回200状态码,和hash,key.

七牛的管理凭证怎样自己写--delete接口java实现

Qiniu 七牛问题解答 七牛的管理接口举例,有兴趣的可以自己来写下七牛的管理demao 问题解决方案 delete接口的java代码如下: //ak,sk需要去七牛后台的秘钥中去拿. public string delete(string encodeUrl) { string AccessToken = ""; Stream outstream = null; string getUrl = "http://" + "rs.qiniu.com"