阿里云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;
        }

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值