导出列表
This commit is contained in:
73
src/WMS.Web.Domain/Services/QiniuUploadService.cs
Normal file
73
src/WMS.Web.Domain/Services/QiniuUploadService.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using Microsoft.Extensions.Options;
|
||||
using Newtonsoft.Json;
|
||||
using Qiniu.Http;
|
||||
using Qiniu.Storage;
|
||||
using Qiniu.Util;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using WMS.Web.Core.Internal.Results;
|
||||
using WMS.Web.Domain.IService;
|
||||
using WMS.Web.Domain.Options;
|
||||
|
||||
namespace WMS.Web.Domain.Services
|
||||
{
|
||||
public class QiniuUploadService : IQiniuUploadService
|
||||
{
|
||||
private readonly QiniuOptions _option;
|
||||
public QiniuUploadService(IOptions<QiniuOptions> option)
|
||||
{
|
||||
_option = option?.Value;
|
||||
}
|
||||
/// <summary>
|
||||
/// 上传文件
|
||||
/// </summary>
|
||||
/// <param name="fileName"></param>
|
||||
/// <param name="stream"></param>
|
||||
/// <param name="isAutoDelte"></param>
|
||||
/// <returns></returns>
|
||||
public Task<Result<string>> Upload(string fileName, Stream stream, bool isAutoDelte = false)
|
||||
{
|
||||
// 生成(上传)凭证时需要使用此Mac
|
||||
// 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
|
||||
// 实际应用中,请自行设置您的AccessKey和SecretKey
|
||||
Mac mac = new Mac(_option.AccessKey, _option.SecretKey);
|
||||
|
||||
PutPolicy putPolicy = new PutPolicy();
|
||||
// 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
|
||||
putPolicy.Scope = _option.Bucket + ":" + fileName;
|
||||
// putPolicy.Scope = bucket;
|
||||
// 上传策略有效期(对应于生成的凭证的有效期)
|
||||
putPolicy.SetExpires(3600);
|
||||
// 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
|
||||
if (isAutoDelte)
|
||||
putPolicy.DeleteAfterDays = 7;
|
||||
string jstr = putPolicy.ToJsonString();
|
||||
string token = Auth.CreateUploadToken(mac, jstr);
|
||||
|
||||
Config config = new Config();
|
||||
// 空间对应的机房 华 东 ZONE_CN_East 华 北 ZONE_CN_North 华 南 ZONE_CN_Sout 北 美 ZONE_US_North 东南亚 ZONE_AS_Singapore
|
||||
config.Zone = Zone.ZONE_CN_South;
|
||||
// 是否使用https域名
|
||||
config.UseHttps = true;
|
||||
// 上传是否使用cdn加速
|
||||
config.UseCdnDomains = true;
|
||||
HttpResult result = null;
|
||||
try
|
||||
{
|
||||
FormUploader fu = new FormUploader(config);
|
||||
result = fu.UploadStream(stream, fileName, token, null);
|
||||
if (result.Code == 200)
|
||||
return Task.FromResult(Result<string>.ReSuccess(_option.Url + fileName));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex);
|
||||
return Task.FromResult(Result<string>.ReFailure("上传文件失败" + ex.ToString(), 0));
|
||||
}
|
||||
return Task.FromResult(Result<string>.ReFailure("上传文件失败" + JsonConvert.SerializeObject(result), 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user