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