阿里云oss文档预览与快照

阿里云oss做文档预览与快照

1:开通oss,https://oss.console.aliyun.com/overview

2:创建ram授权码:https://ram.console.aliyun.com/overview

2:绑定imm,【数据处理】->【智能媒体】->【绑定】

3:绑定快照,【数据处理】->【文档处理】->创建绑定project

4:绑定域名,【Bucket配置】->【绑定域名】->需要在域名解析中配置跳转,也可以直接在这个域名绑定页面中选中【自动添加 CNAME 记录

//获取文件列表
        public IActionResult GetFilesList()
        {
            var accessKeyId = "xxx";
            var accessKeySecret = "xxx";
            var bucketName = "test11111111111-1";
            var endpoint = @"https://oss-cn-shenzhen.aliyuncs.com";
            var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
            try
            {
                var listObjectsRequest = new ListObjectsRequest(bucketName);
                var result = client.ListObjects(listObjectsRequest);
                return new ObjectResult(result.ObjectSummaries.Select(m =>new
                {
                    fileName=m.Key
                }));
                //foreach (var summary in result.ObjectSummaries)
                //{
                //    Console.WriteLine("File name:{0}", summary.Key);
                //}
            }
            catch (Exception ex)
            {
                Console.WriteLine("List objects failed. {0}", ex.Message);
            }
            return new ObjectResult("[]");
        }
        //获取文件的快照图
        public IActionResult GetFileSnapshot(string objectName)
        {
            var accessKeyId = "xxx";
            var accessKeySecret = "xxx";
            var bucketName = "test11111111111-1";
            return new ObjectResult(this.GetSnapshot(accessKeyId, accessKeySecret, bucketName, objectName));
        }
        //获取快照图列表
        public IActionResult GetFileSnapshotList()
        {
            var accessKeyId = "xxx";
            var accessKeySecret = "xxx";
            var bucketName = "test11111111111-1";

            var endpoint = @"https://oss-cn-shenzhen.aliyuncs.com";
            var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
            try
            {
                var listObjectsRequest = new ListObjectsRequest(bucketName);
                var result = client.ListObjects(listObjectsRequest);
                //return new ObjectResult(result.ObjectSummaries.Select(m => m.Key));
                List<object> list=new List<object>();
                foreach (var summary in result.ObjectSummaries)
                {
                    string extension = Path.GetExtension(summary.Key);
                    string url = "";
                    if (extension.Equals(".jpg", StringComparison.OrdinalIgnoreCase)||extension.Equals(".png", StringComparison.OrdinalIgnoreCase))
                    {
                        url = this.GetPicPreview(accessKeyId, accessKeySecret, bucketName, summary.Key);
                    }
                    else
                    {
                        url = this.GetSnapshot(accessKeyId, accessKeySecret, bucketName, summary.Key);
                    }
                    list.Add(new
                    {
                        fileName = summary.Key,
                        snapshot = url
                    });
                }
                return new ObjectResult(list);
            }
            catch (Exception ex)
            {
                Console.WriteLine("List objects failed. {0}", ex.Message);
            }
            return new ObjectResult("[]");
        }
        //获取文件预览
        [HttpGet]
        public IActionResult GetPreviewFile(string objectName)
        {
            var accessKeyId = "xxx";
            var accessKeySecret = "xxx";
            var bucketName = "test11111111111-1";
            string extension = Path.GetExtension(objectName);
            string url = "";
            if (extension.Equals(".jpg", StringComparison.OrdinalIgnoreCase) || extension.Equals(".png", StringComparison.OrdinalIgnoreCase))
            {
                url = this.GetPicPreview(accessKeyId, accessKeySecret, bucketName, objectName);
            }
            else
            {
                url = this.GetPreviewdoc(accessKeyId, accessKeySecret, bucketName, objectName);
            }
            return new ObjectResult(url);
        }
        //获取快照
        private string GetSnapshot(string accessKeyId, string accessKeySecret, string bucketName, string objectName)
        {
            var conf = new ClientConfiguration();
            conf.IsCname = true;
            var endpoint = @"http://tp.x-ys.cn/";
            var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
            try
            {
                //var process = "doc/snapshot,target_jpg,source_xlsx,page_2";
                var process = "doc/snapshot";
                var req = new GeneratePresignedUriRequest(bucketName, objectName, SignHttpMethod.Get)
                {
                    Expiration = DateTime.Now.AddHours(1),
                    Process = process
                };
                // 生成带有签名的URI。
                var uri = client.GeneratePresignedUri(req);


                return uri.AbsoluteUri;
            }
            catch (OssException ex)
            {
                Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
                    ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
            return null;
        }
        //获取预览
        private string GetPreviewdoc(string accessKeyId, string accessKeySecret, string bucketName, string objectName)
        {
            var endpoint = @"https://oss-cn-shenzhen.aliyuncs.com";
            var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
            try
            {
                var process = "imm/previewdoc,copy_1";
                var req = new GeneratePresignedUriRequest(bucketName, objectName, SignHttpMethod.Get)
                {
                    Expiration = DateTime.Now.AddHours(1),
                    Process = process
                };
                // 生成带有签名的URI。
                var uri = client.GeneratePresignedUri(req);


                return uri.AbsoluteUri;
            }
            catch (OssException ex)
            {
                Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
                    ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
            return null;
        }
        //获取图片预览
        private string GetPicPreview(string accessKeyId, string accessKeySecret, string bucketName, string objectName)
        {
            var endpoint = @"https://oss-cn-shenzhen.aliyuncs.com";
            var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
            try
            {
                var process = "image/resize,w_200/quality,q_90";
                var req = new GeneratePresignedUriRequest(bucketName, objectName, SignHttpMethod.Get)
                {
                    Expiration = DateTime.Now.AddHours(1),
                    Process = process
                };
                // 生成带有签名的URI。
                var uri = client.GeneratePresignedUri(req);


                return uri.AbsoluteUri;
            }
            catch (OssException ex)
            {
                Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
                    ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
            return null;
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/579578.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AtCoder Beginner Contest 173 F - Intervals on Tree(计数 树的性质 贡献)

题目 思路来源 洛谷题解AT_abc173_f Intervals on Tree 题解 - 洛谷专栏 题解 一棵树&#xff0c;考虑加边的过程&#xff0c;加一条边减少一个连通块 那么&#xff0c;逆向这个过程&#xff0c;没删一条边&#xff0c;就多一个连通块 树&#xff1a;点的个数边的个数1 森…

后端端口也可以直接在浏览器访问

比如在浏览器输入http://localhost:8078/hello/helloword访问的是后端的 RestController RequestMapping("/hello") public class HelloWord {RequestMapping("/helloword")public String helloWord(){return "hello word";} }浏览器将会返回

JavaEE——介绍 HTTPServlet 三部分使用与 cookie 和 session 的阐述

文章目录 一、HTTPServlet介绍其中的关键 三个方法 二、HTTPServletRequest(处理请求)1.分块介绍方法作用get 为前缀的方法字段中 含有 getParameter 字段 的方法(前后端交互)&#xff1a;字段中 含有 getHeader 字段 的方法&#xff1a; 2.解释前后端的交互过程3.使用 json 格…

科技感十足特效源码

源码介绍 科技感十足特效源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 源码截图 源码下载 科技感十足特效源码

Python_AI库 Matplotlib的应用简例:绘制与保存折线图

本文默认读者已具备以下技能&#xff1a; 熟悉Python基础语法&#xff0c;以自行阅读python代码块熟悉Vscode或其它编辑工具的应用 在数据可视化领域&#xff0c;Matplotlib无疑是一个强大的工具。它允许我们创建各种静态、动态、交互式的可视化图形&#xff0c;帮助我们更好…

pyaibote--安卓自动化环境配置与基础的使用方法

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 pyaibote介绍 pyaibote是一个全新&#xff0c;强大的办公自动化库。 支持找图&#xff0c;识别像素等操作。 比appium快十倍。 文章介绍 有大佬给我提到这个库后&#xff0c;我来查看。然后发现这个库太新了&am…

Coursera: An Introduction to American Law 学习笔记 Week 04: Constitutional Law

An Introduction to American Law 本文是 https://www.coursera.org/programs/career-training-for-nevadans-k7yhc/learn/american-law 这门课的学习笔记。 文章目录 An Introduction to American LawInstructors Week 04: Constitutional LawKey Constitutional Law TermsSup…

redission原理笔记

加锁成功的线程&#xff0c;将UUID和线程id和key绑定&#xff0c; 加锁成功后&#xff0c;内部有一个看门狗机制&#xff0c;每隔十秒看下当前线程是否还持有锁&#xff0c;延长生存时间。 没有获取锁的就一直自旋等待&#xff0c;直到超时。 如果redis是主从同步的&#xff0…

Android Studio gradle 默认sourceSets配置

一. AS默认的sourceSets配置 sourceSets在Android插件中如何使用的&#xff1a;android {sourceSets {main {manifest.srcFile AndroidManifest.xmljava.srcDirs [src]resources.srcDirs [src]aidl.srcDirs [src]renderscript.srcDirs [src]res.srcDirs [res]assets.srcD…

Anti Rookit -- 检测隐藏进程

Anti Rookit 一&#xff1a;检测隐藏进程 引言 检测隐藏进程除了众所周知的枚举进程ID之外&#xff0c;还有枚举句柄表的方式。不过今天给大家带来的是第三种方法。 探究 应用层通过接口 C r e a t e P r o c e s s \textcolor{cornflowerblue}{CreateProcess} CreateProcess…

现代信号处理7_最小二乘(CSDN_20240428)

最小二乘法最早由高斯在18世纪提出&#xff0c;几百年以来&#xff0c;这种方法一直被广泛应用。 最小二乘简介 这里是研究最小二乘的起点。随机变量只能存在与理论计算中&#xff0c;我们在工程实践中对随机变量的认识与理论计算中得到的关于随机变量的各种性质相比&#xff…

Penpad 再获 Animoca Brands 投资,全新生态历程

Penpad是Scroll生态的LaunchPad & Yield Aggregator平台&#xff0c;该平台近日在融资上取得了系列进展。据悉&#xff0c;Penpad在前不久率先获得了来自于Gate Labs以及Scroll联合创始人Sandy Peng的融资&#xff0c;并且在近日&#xff0c;其又获得了来自于知名加密投资机…

Coursera: An Introduction to American Law 学习笔记 Week 01: Tort Law

An Introduction to American Law 本文是 https://www.coursera.org/programs/career-training-for-nevadans-k7yhc/learn/american-law 这门课的学习笔记。 文章目录 An Introduction to American LawInstructors SyllabusWeek 01: Tort LawKey Tort Law TermsTort Law: Part …

2024.阳光能源追光计划暨大陆考察团交流分享会

近日大陆考察团抵达香港&#xff0c;受到了本司热情接待和安排。公司于4月27日下午举办了阳光能源追光计划主题交流会。 会上公司营销部总监张超&#xff0c;分享了阳光能源近几年的能源发展之路及公司新推出的追光计划&#xff0c;得到了大陆考察交流团团长杨国均先生的高度赞…

CSS3(响应式布局)

#过渡# 属性连写&#xff1a; transition: width 2s linear 1s; //前一个时间用于表示过渡效果持续时间&#xff0c;后一个时间用于表示过渡效果的延迟。 #转换# #2D转换# 和 #3D转换# 注意&#xff1a;其中angle对应单位为&#xff1a;deg #圆角# #边框# …

java中的泛型(三)——通配符

在前面的文章中我们简要介绍了泛型的概念以及泛型类和泛型方法的使用。在介绍泛型时我们说过在在java中一般用E、T、K、V、N、?这几个字母和符号来表示泛型&#xff0c;对于前面的几个字符它们的使用没有区别&#xff0c;只要注意它们所代表的类型就好。而对于最后一个&#x…

Oracle集群-常用查询及操作(工作日常整理)

1.Oracle集群状态 select * from gv$instance; 示例结果&#xff1a; 2.Oracle集群-增大表空间 常见问题&#xff1a; 导入时或使用时&#xff0c;提示无法extend table ,增加表空间即可 常用操作&#xff1a; 1&#xff09;查询表空间 select * from dba_tablespaces; --…

微信小程序[黑马笔记]

简介 常用组件 视图组件 <!--pages/list/list.wxml--><scroll-view class"container1" scroll-y><view>A</view><view>B</view><view>A</view></scroll-view><!--pages/list2/list.wxml--><swiper …

【禅道客户案例】同方智慧能源数智化转型新实践 禅道助力前行

同方智慧能源是同方股份有限公司的骨干企业。依托中核集团、清华大学的科技优势&#xff0c;坚持技术和资源双核驱动&#xff0c;基于30多年行业积淀&#xff0c;面向建筑、交通、工业、北方供热、数据中心等主要用能场景提供设计咨询、产品技术、投资建设、运营服务&#xff0…

设计模式学习笔记 - 项目实战一:设计实现一个支持各种算法的限流框架(实现)

概述 上篇文章&#xff0c;我们介绍了如何通过合理的设计&#xff0c;来实现框架的功能性需求的同时&#xff0c;满足易用、易扩展、灵活、低延迟、高容错等非功能性需求。在设计的过程中&#xff0c;我们也借鉴了之前讲过的一些开源项目的设计思想。比如 Spring 的低侵入松耦…
最新文章