七牛云API的使用包括Ajax上传功能及凭证生成

api,使用,包括,ajax,上传,功能,凭证,生成 · 浏览次数 : 317

小编点评

## Summary of the code This code defines three functions for handling file upload in a web application: **1. UpLoadToken()**: This function generates a temporary upload token using the Qiniu Auth library and a PutPolicy object. It requires the key and a JSON-encoded policy string as input. **2. UpLoad()**: This function performs the actual upload to Qiniu. It takes the file path, key, and token as input. It configures the Qiniu storage configuration and uses a FormUploader object to handle the upload request. **3. Down()**: This function retrieves the file from Qiniu using a different configuration. It requires the key and the URL of the file on Qiniu. ## Key points * The code uses Qiniu's `PutPolicy` to define upload options such as expires time, scope, and return body. * It also configures the Qiniu storage configuration with relevant settings like CDN, host, and security. * The `UploadImage` endpoint accepts a base64-encoded image data and posts it to Qiniu. * The success callback of `UploadImage` updates the database with the uploaded image key. ## Overall, this code demonstrates how to implement efficient and secure file upload to Qiniu using both server-side and client-side approaches.

正文

1.服务端(主要用于生成上传,删除,下载等凭证)

引入Qiniu的Get包。包就叫Qiniu。

//上传凭证

       //上传凭证:其余凭证类似的写法
     public string UpLoadToken() { //密钥 Mac mac = new Mac("AK", "SK"); // 存储空间名 string Bucket = "wximagess"; //上传凭证 PutPolicy putPolicy = new PutPolicy(); //凭证有效时间 putPolicy.SetExpires(7200); //存储空间名 。覆盖上传要写成 putPolicy.Scope = Bucket:key; key是文件名 putPolicy.Scope = Bucket; //上传的内容定时删除(自定义)30天 putPolicy.DeleteAfterDays = 30; string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString()); return token; }

 服务端直接下载

  ·  public string Down()
        {
            Mac mac = new Mac("AK", "SK");
//下载的地址  
string domain = "http://rkp2te65d.bkt.clouddn.com";
       //下载的文件名
string key = "测试上传2";
       //下载外链 3600外链有效期
string privateUrl = DownloadManager.CreatePrivateUrl(mac, domain, key, 3600); Console.WriteLine(privateUrl); return privateUrl; }

 服务端直接上传

       public string UpLoad()
        {
            //密钥
            Mac mac = new Mac("AK", "SK");
            //文件名
            string key = "测试上传2";
            // 本地文件路径
            string filePath = "C:\\素材\\图片\\6a04b428gy1fyrlfhjaz1g207i07ijy0.gif";
            // 存储空间名
            string Bucket = "XXX";
       //上传凭证
            PutPolicy putPolicy = new PutPolicy();
            putPolicy.SetExpires(7200);
            putPolicy.Scope = Bucket;
       //自定义返回结果,可不设置,也可根据官网自定义,这里是官网给的自定义例子 putPolicy.ReturnBody
= "{\"key\":\"$(key)\",\"hash\":\"$(etag)\",\"fsiz\":$(fsize),\"bucket\":\"$(bucket)\",\"name\":\"$(x:fname)\"}"; putPolicy.DeleteAfterDays = 30;        //凭证 string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());         Config config = new Config(); // 空间对应的机房.这里官网给的并不全,新出的空间地域无法直接引用,需要自己根据官网的地址New出新的机房、这里是华东浙江2 config.Zone = new Qiniu.Storage.Zone { ApiHost = "api.qiniuapi.com", CdnUpHosts = new string[1] { "upload-cn-east-2.qiniup.com" }, RsHost = "rs-cn-east-2.qiniuapi.com", RsfHost = "rsf-cn-east-2.qiniuapi.com", IovipHost = "iovip-cn-east-2.qiniuio.com", SrcUpHosts = new string[1] { "up-cn-east-2.qiniup.com" }, }; // 是否使用https域名 https收费,我不使用 config.UseHttps = false; // 上传是否使用cdn加速 config.UseCdnDomains = true;        //表单上传。好像百兆以下都可以,超过百兆可以分片上传,图片使用表单上传就好,免费空间只有10G。上传图片还可,视频肯定不够用 FormUploader target = new FormUploader(config); HttpResult result = target.UploadFile(filePath, key, token, null);          return "form upload result: " + result.ToString(); }

 

2.Ajax请求上传图片

function A() {
        $.ajax({
            //请求服务端拿到上传凭证
            url: "http://xxxx",
            type: "get",
            success: function (res) {
                var token = res;
                // localData是图片的base64数据,你可以用任何方式得到你图片的Base64编码
                var localData = "XXXXX";
                //七牛云只需要Base64后面的内容,因此把多余的前缀删除
                localData = localData.replace("data:image/jgp;base64", "");
                //开始上传
                $.ajax({
                    url: "http://upload-cn-east-2.qiniup.com/putb64/-1",
                    type: "post",
                    beforeSend(request) {
                        request.setRequestHeader("Content-Type", "application/octet-stream");
                        request.setRequestHeader("Authorization", "UpToken " + token);
                    },
                    data: localData,
                    success: function (res) {
                        //上传成功后把文件名key存到自己的数据库里
                        var imageKey = res.key;
                        $.ajax({
                            url: "http://XXXX/UploadImage",
                            type: "post",
                            data: imageKey,
                            headers: {
                                "Content-Type": "application/json"
                            }
                            ,
                            success: function (res) {
                                alert(res);
                            }
                        })
                    }
                })
            }
        })
    }
View Code

 

        

 

与七牛云API的使用包括Ajax上传功能及凭证生成相似的内容:

七牛云API的使用包括Ajax上传功能及凭证生成

1.服务端(主要用于生成上传,删除,下载等凭证) 引入Qiniu的Get包。包就叫Qiniu。 //上传凭证 //上传凭证:其余凭证类似的写法 public string UpLoadToken() { //密钥 Mac mac = new Mac("AK", "SK"); // 存储空间名 str

[知识管理] Obsidian + Remotely Save插件 + 第三方存储/OSS(七牛云)的同步方案

0 序言 在几经选择、对比之后,我选择:Obsidian + Remotely Save插件 + 第三方存储/OSS(七牛云) 的方案来搭建自己的【知识管理系统】。 对比分析知识管理工具的过程,详情参见: [知识管理] 个人知识管理之知识管理工具的全面分析 - 博客园/千千寰宇 【推荐】 知识管理与

乾坤大挪移,如何将同步阻塞(sync)三方库包转换为异步非阻塞(async)模式?Python3.10实现。

众所周知,异步并发编程可以帮助程序更好地处理阻塞操作,比如网络 IO 操作或文件 IO 操作,避免因等待这些操作完成而导致程序卡住的情况。云存储文件传输场景正好包含网络 IO 操作和文件 IO 操作,比如业内相对著名的七牛云存储,官方sdk的默认阻塞传输模式虽然差强人意,但未免有些循规蹈矩,不够锐意

深度学习(七)——神经网络的卷积操作

关于torch.nn.functional操作的深入理解,主要介绍卷积计算过程。

文件系统(七):文件系统崩溃一致性、方法、原理与局限

liwen01 2024.06.16 前言 先提几个问题:什么是文件系统崩溃一致性?为什么会出现文件系统崩溃一致性问题?有哪些方法可以解这个问题?它们各自又有哪些局限性? window系统电脑异常后会蓝屏、手机死机卡顿后我们会手动给它重启,大部分设备的系统在遇到不可修复的严重异常后都会尝试通过重启来

架构设计(七):日志、监控和自动化

架构设计(七):日志、监控和自动化 作者:Grey 原文地址: 博客园:架构设计(六):日志、监控和自动化 CSDN:架构设计(六):日志、监控和自动化 针对小型网站,日志、监控和自动化支持是很好的做法,但不是必须的。然而,如果网站已经发展到为大型企业服务,日志、监控和自动化工具是必不可少的。 日志

设计模式(七)桥接

一、定义 将抽象部分与它的实现部分解耦,使两者都能够独立变化,桥接模式是一种结构型模式。 二、描述 包含以下四个角色: 1、Abstraction(抽象类):它是用于定义抽象类的接口,通常是抽象类而不是接口,其中定义了一个Implementor(实现类接口)类型的对象并可以维护该对象,它与Imple

解密Prompt系列32. LLM之表格理解任务-文本模态

这一章我们聊聊大模型表格理解任务,在大模型时代主要出现在包含表格的RAG任务,以及表格操作数据抽取文本对比等任务中。这一章先聊单一的文本模态,我们分别介绍微调和基于Prompt的两种方案。

解密Prompt系列31. LLM Agent之从经验中不断学习的智能体

模型想要完成自主能力进化和自主能力获得,需要通过Self-Reflection from Past Experience来实现。那如何获得经历,把经历转化成经验,并在推理中使用呢?本章介绍三种方案

解密Prompt系列30. LLM Agent之互联网冲浪智能体

这一章介绍自主浏览操作网页的WebAgent和数据集:初级MiniWoB++,高级MIND2WEB,可交互WEBARENA,多模态WebVoyager,多轮对话WebLINX,复杂AutoWebGLM