当前位置: 首页 > news >正文

网站模板设计师要求/如何快速推广网站

网站模板设计师要求,如何快速推广网站,百度竞价推广出价技巧,邯郸网站建设哪能做OnceMi.AspNetCore.OSS Asp.Net Core 5.0/6.0对象储存扩展包,支持Minio自建对象储存、阿里云OSS、腾讯云COS、七牛云Kodo。支持OSS常规操作,比如储存桶创建,删除、对象上传、下载、生成签名URL等。支持.NET 5/6,也推荐升级至.NET…

OnceMi.AspNetCore.OSS

Asp.Net Core 5.0/6.0对象储存扩展包,支持Minio自建对象储存、阿里云OSS、腾讯云COS、七牛云Kodo。支持OSS常规操作,比如储存桶创建,删除、对象上传、下载、生成签名URL等。支持.NET 5/6,也推荐升级至.NET 5/6.

OSS 文档

Minio: 点此查看
Aliyun: 点此查看
QCloud: 点此查看

问题

  1. Minio通过Nginx发反向代理后直接通过域名(默认443端口)调用存在问题,应该是Minio本身问题,有兴趣的可以自行测试研究,具体信息我已经发布在Issue中。
  2. 腾讯云PutObjectAsync流式上传接口,有非常低的概率会抛“储存桶不存在的异常”,应该是腾讯云自身的原因,具体原因未知。

如何使用

1、Install OnceMi.AspNetCore.OSS。
Cmd install:

dotnet add package OnceMi.AspNetCore.OSS

Nuget: OnceMi.AspNetCore.OSS

2、Configuration
You need to configure OSSService in your Startup.cs:

//default minio
//添加默认对象储存配置信息
services.AddOSSService(option =>
{option.Provider = OSSProvider.Minio;option.Endpoint = "oss.oncemi.com:9000";option.AccessKey = "Q*************9";option.SecretKey = "A**************************Q";option.IsEnableHttps = true;option.IsEnableCache = true;
});//aliyun oss
//添加名称为‘aliyunoss’的OSS对象储存配置信息
services.AddOSSService("aliyunoss", option =>{option.Provider = OSSProvider.Aliyun;option.Endpoint = "oss-cn-hangzhou.aliyuncs.com";option.AccessKey = "L*******************U";option.SecretKey = "5*******************************T";option.IsEnableCache = true;});//qcloud oss
//从配置文件中加载节点为‘OSSProvider’的配置信息
services.AddOSSService("QCloud", "OSSProvider");

可注入多个OSSService,不同的Service用名称来区分。需要注意的是,腾讯云COS中配置节点Endpoint表示AppId。

配置文件实例:

{"OSSProvider": {"Provider": "QCloud", //枚举值支持:Minio/Aliyun/QCloud"Endpoint": "你的AppId", //腾讯云中表示AppId"Region": "ap-chengdu",  //地域"AccessKey": "A****************************z","SecretKey": "g6I***************la","IsEnableCache": true  //是否启用缓存,推荐开启}
}

3、Use

/// <summary>
/// 使用默认的配置文件
/// </summary>
public class HomeController : Controller
{private readonly ILogger<HomeController> _logger;private readonly IOSSService _OSSService;private readonly string _bucketName = "default-dev";public HomeController(ILogger<HomeController> logger, IOSSService OSSService){_logger = logger;_OSSService = OSSService;}
}
/// <summary>
/// 获取IOSSServiceFactory,根据名称创建对应的OSS服务
/// </summary>
public class QCloudController : Controller
{private readonly ILogger<QCloudController> _logger;private readonly IOSSService _OSSService;private readonly string _bucketName = "default-dev";public QCloudController(ILogger<QCloudController> logger, IOSSServiceFactory ossServiceFactory){_logger = logger;_OSSService = ossServiceFactory.Create("QCloud");}
}

列出bucket中的全部文件

public async Task<IActionResult> ListBuckets()
{try{var result = await _OSSService.ListBucketsAsync();return Json(result);}catch (Exception ex){return Content(ex.Message);}
}

Option Params

名称类型说明案例备注
Provider枚举OSS提供者Minio允许值:Minio,Aliyun, QCloud
Endpointstring节点oss-cn-hangzhou.aliyuncs.com在腾讯云OSS中表示AppId
AccessKeystringAccessKeyF…s
SecretKeystringSecretKeyv…d
Regionstring地域ap-chengdu
SessionTokenstringtoken仅Minio中使用
IsEnableHttpsbool是否启用HTTPStrue建议启用
IsEnableCachebool是否启用缓存true启用后将缓存签名URL,以减少请求次数

API Reference

BucketExistsAsync

Task<bool> BucketExistsAsync(string bucketName);

判断该储存桶是否存在。

CreateBucketAsync

Task<bool> CreateBucketAsync(string bucketName);

创建一个储存桶。如果当前储存桶存在,将抛出异常BucketExistException

ListBucketsAsync

Task<bool> ListBucketsAsync();

列出当前账号下允许访问的所有储存桶。

RemoveBucketAsync

Task<bool> RemoveBucketAsync(string bucketName);

移除当前储存桶。移除储存桶之前,请先移除储存桶中所有的对象和对象碎片文件。

SetBucketAclAsync

Task<bool> SetBucketAclAsync(string bucketName, AccessMode mode);

设置储存桶的外部访问权限,支持的权限有:私有、公共读、公共读写。返回设置结果(True or False)。

GetBucketAclAsync

Task<AccessMode> GetBucketAclAsync(string bucketName);

获取储存桶的外部访问权限。

ObjectsExistsAsync

Task<bool> ObjectsExistsAsync(string bucketName, string objectName);

获取指定储存桶中指定对象是否存在。

ListObjectsAsync

Task<List<Item>> ListObjectsAsync(string bucketName, string prefix = null);

列出当前储存桶所有文件。如果储存桶中文件较多,可以需要较长的执行时间,因此推荐填写prefix参数,prefix会根据文件名称进行前端匹配。比如输出abc,则列出全部abc开头的文件或目录。

GetObjectAsync

获取文件的数据流。
Methos 1:

Task GetObjectAsync(string bucketName, string objectName, Action<Stream> callback, CancellationToken cancellationToken = default);

Example

try
{await _OSSService.GetObjectAsync(_bucketName, "1.jpg", (stream) =>{using (FileStream fs = new FileStream("1.jpg", FileMode.Create, FileAccess.Write)){stream.CopyTo(fs);fs.Close();}});return Json("OK");
}
catch (Exception ex)
{throw ex;
}

Methos 2:

Task GetObjectAsync(string bucketName, string objectName, string fileName, CancellationToken cancellationToken = default);

Example

try
{await _OSSService.GetObjectAsync(_bucketName, "1.jpg", "C:\\Temp\\1.jpg");return Json("OK");
}
catch (Exception ex)
{throw ex;
}
PutObjectAsync

上传文件。支持流式上传和上传本地文件。腾讯云不止流式上传,为了兼容接口,采用先将流加载到内存中再上传。

Method 1(流式上传):

Task<bool> PutObjectAsync(string bucketName, string objectName, Stream data, CancellationToken cancellationToken = default(CancellationToken));

Example

try
{byte[] bs = System.IO.File.ReadAllBytes(@"C:\Users\sysru\Desktop\PHOTO-1.jpg");using (MemoryStream filestream = new MemoryStream(bs)){await _OSSService.PutObjectAsync(_bucketName, "PHOTO-1.jpg", filestream);}return Json("OK");
}
catch (Exception ex)
{throw;
}

Method 2(上传本地文件):
Task<bool> PutObjectAsync(string bucketName, string objectName, string filePath, CancellationToken cancellationToken = default);

Example

try
{await _OSSService.PutObjectAsync(_bucketName, "PHOTO-1.jpg", @"C:\Users\sysru\Desktop\PHOTO-1.jpg");return Json("OK");
}
catch (Exception ex)
{throw;
}
GetObjectMetadataAsync
Task<ItemMeta> GetObjectMetadataAsync(string bucketName, string objectName, string versionID = null, string matchEtag = null, DateTime? modifiedSince = null);

获取对象的元数据,或根据VersionId获取对象元数据。需要注意的是,在阿里云对象存储和腾讯云对象存储中不支持matchEtag和modifiedSincecan参数。

CopyObjectAsync

Task<bool> CopyObjectAsync(string bucketName, string objectName, string destBucketName, string destObjectName = null);

在储存桶之间复制对象。

RemoveObjectAsync

Task<bool> RemoveObjectAsync(string bucketName, string objectName);

删除储存桶中指定对象。

Task<bool> RemoveObjectAsync(string bucketName, List<string> objectNames);

删除储存桶中多个对象。

RemovePresignedUrlCache

void RemovePresignedUrlCache(string bucketName, string objectName);

清除对象生成的签名URL缓存。在未开启签名URL缓存的情况下,此功能无效。

PresignedGetObjectAsync

Task<string> PresignedGetObjectAsync(string bucketName, string objectName, int expiresInt);

生成一个给HTTP GET请求用的presigned URL。浏览器/移动端的客户端可以用这个URL进行下载,即使其所在的存储桶是私有的。这个presigned URL可以设置一个失效时间,且不能超过7天。
如果该对象拥有公共读权限或该对象继承了储存桶的公共读权限,将生成永久下载链接。
如果Option参数中设置为IsEnableCache为True,将会在有效时间中缓存生成的签名链接,同时也推荐开启此功能,将大大降低请求的频率。

PresignedPutObjectAsync

Task<string> PresignedPutObjectAsync(string bucketName, string objectName, int expiresInt);

生成一个给HTTP PUT请求用的presigned URL。浏览器/移动端的客户端可以用这个URL进行上传,即使其所在的存储桶是私有的。这个presigned URL可以设置一个失效时间,且不能超过7天。
如果Option参数中设置为IsEnableCache为True,将会在有效时间中缓存生成的签名链接,同时也推荐开启此功能,将大大降低请求的频率。
注意:七牛云对象储存不支持此操作!

SetObjectAclAsync

Task<bool> SetObjectAclAsync(string bucketName, string objectName, AccessMode mode);

设置对象的访问权限,默认文件的访问权限是继承储存桶的。但是可以单独通过此API为对象设置访问权限。
注意:七牛云对象储存不支持此操作!

GetObjectAclAsync

Task<AccessMode> GetObjectAclAsync(string bucketName, string objectName);

获取对象的储存桶权限,如果是该权限继承自储存桶,获取的可能是储存桶对当前对象的访问权限。
注意:七牛云对象储存不支持此操作!

RemoveObjectAclAsync

Task<AccessMode> RemoveObjectAclAsync(string bucketName, string objectName);

清除该对象的访问权限或将其恢复至继承权限。
注意:七牛云对象储存不支持此操作!

Dependencies

  1. Aliyun.OSS.SDK.NetCore
  2. Microsoft.Extensions.Caching.Memory
  3. Newtonsoft.Json
  4. Tencent.QCloud.Cos.Sdk

项目地址

https://gitee.com/oncemi/oncemi_aspnetcore_oss

在这里插入图片描述

http://www.jmfq.cn/news/5122927.html

相关文章:

  • 上海翼成信息科技有限公司做的什么网站/如何做好互联网营销推广
  • 怎样做联盟网站/搜索引擎营销怎么做
  • 义乌网站建设/长春seo关键词排名
  • 男女做暖暖的视频试看网站/阿里巴巴友情链接怎么设置
  • 网站业务怎么做的/灰色词排名上首页
  • 网站换源码如何保留以前的文章/百度推广怎么做步骤
  • 网站seo 工具/培训心得体会100字
  • 网站内容图片怎么做的/百度做广告怎么做
  • 温州做网站多少钱/谷歌浏览器安卓版下载
  • 小型视频网站建设/怎么让百度搜出自己
  • 江门手工外发加工网/快速排名优化系统
  • 纺织服装网站建设规划方案/免费论坛建站系统
  • 手机版网站/企业seo关键字优化
  • 南阳开网站制作/关键词优化顾问
  • 徐州制作网站软件/网推技巧
  • wordpress做商城网站/关键词诊断优化全部关键词
  • 潍坊网站建设推广报价/年度关键词有哪些
  • 用ps如何做模板下载网站/深圳推广网络
  • 杭州做网站优化/杭州seo技术培训
  • 品牌建设是指什么的行为过程/seo优化方案案例
  • 云梦模板网站优缺点/中国培训网的证书含金量
  • 邵阳网站网站建设/天天广告联盟
  • 青岛代理记账公司现状/官网排名优化
  • 网站维护多少钱/论坛推广工具
  • 网站开发案例/网络营销策划创意案例点评
  • 网站建设中图片/平台营销
  • 网站开发价格 北京/旅游网站网页设计
  • 网站建设改版攻略/软文推广例子
  • php政府网站模板/百度竞价排名机制
  • 事业单位网站建设计划/网站关键词优化价格