导出列表

This commit is contained in:
18942506660
2023-11-14 14:59:02 +08:00
parent 239105b6d5
commit 97c83b9aa3
14 changed files with 648 additions and 11 deletions

View 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));
}
}
}