123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- using Aliyun.OSS;
- using QWPlatform.SystemLibrary.LogManager;
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.IO;
- using System.Linq;
- using System.Security.Cryptography;
- using System.Text;
- using System.Threading.Tasks;
- using System.Web;
- namespace PMS.Plugins.AliFileUpload
- {
- public class AliFileUpload
- {
- private static Logger Log = Logger.Instance;
- private static string OSSAccessKeyId = QWPlatform.SystemLibrary.Security.DESEncrypt.DesDecrypt(ConfigurationManager.AppSettings["OSSAccessKeyId"].Trim());//OSSAccessKeyId
- private static string OSSAccessKeySecret = QWPlatform.SystemLibrary.Security.DESEncrypt.DesDecrypt(ConfigurationManager.AppSettings["OSSAccessKeySecret"].Trim());//OSSAccessKeySecret
- private static string _http = "https://oss-cn-beijing.aliyuncs.com";// 主机名oss-cn-beijing.aliyuncs.com
- private const string _bucketName = "ikuaizi";//Bucket名称
- //private static string _http = QWPlatform.SystemLibrary.Security.DESEncrypt.DesDecrypt(ConfigurationManager.AppSettings["_http"].Trim());
- //private static string _bucketName = QWPlatform.SystemLibrary.Security.DESEncrypt.DesDecrypt(ConfigurationManager.AppSettings["_bucketName"].Trim());
- /// <summary>
- /// 初始化OSS实例对象
- /// </summary>
- public static class OssManager
- {
- private static OssClient ossClient;
- public static OssClient GetInstance()
- {
- if (ossClient == null)
- {
- ossClient = new OssClient(_http, OSSAccessKeyId, OSSAccessKeySecret);
- }
- return ossClient;
- }
- }
- #region 上传文件
- /// <summary>
- /// 以文件流的形式上传文件oss
- /// </summary>
- /// <param name="file">HttpPostedFile</param>
- /// <param name="type">上传类别</param>
- /// <param name="uploadingPerson">上传人</param>
- /// <param name="suffixName">后缀名</param>
- /// <returns>返回阿里的文件名称</returns>
- public static string PutObjectFileStream(HttpFileCollectionBase Files)
- {
- string keyname = "";
- var selectUrl = "";
- try
- {
- var uploadFile = Files[0];
- //获得一个OssClient实例
- OssClient _client = OssManager.GetInstance();
- Random ra = new Random();
- var time= DateTime.Now.ToString("yyyyHHddHHmmss") + ra.Next().ToString();
- keyname = "问题管理系统/" + time+uploadFile.FileName;
- ObjectMetadata metadata = new ObjectMetadata();
- // 可以设定自定义的metadata。
- metadata.ContentType = uploadFile.ContentType;
- using (var fu = uploadFile.InputStream)
- {
- var rest = _client.PutObject(_bucketName, keyname, fu, metadata);
- if (rest.HttpStatusCode == System.Net.HttpStatusCode.OK)
- {
- Log.Info("阿里文件上传成功");
- selectUrl = SelcetFileSddress(keyname);
- }
- }
-
- }
- catch (Exception ex)
- {
- Log.Error("阿里上传文件异常;" + ex.Message);
- }
- return selectUrl;
- }
- #endregion 上传文件
- #region 文件查询
-
- /// <summary>
- /// 查询阿里的访问文件地址
- /// </summary>
- /// <param name="name">阿里文件地址</param>
- /// <returns></returns>
- public static string SelcetFileSddress(string name)
- {
- try
- {
- OssClient _client = OssManager.GetInstance();
- //失效时间
- var req = new GeneratePresignedUriRequest(_bucketName, name, SignHttpMethod.Get)
- {
- Expiration = DateTime.Now.AddHours(1),
- };
- var url = _client.GeneratePresignedUri(req).ToString();
- Log.Info(url);
- url = "https://ikuaizi.oss-cn-beijing.aliyuncs.com/" + name;
- return url;
- }
- catch (Exception ex)
- {
- Log.Error("获取地址失败" + ex.Message);
- }
- return "";
- }
- #endregion 文件查询
-
-
- #region 私有方法
- /// <summary>
- /// 获取文件名称
- /// </summary>
- /// <param name="uploadingPerson">上传人id</param>
- /// <returns></returns>
- private static string GeneratingFileName(string uploadingPerson)
- {
- if (string.IsNullOrEmpty(uploadingPerson))
- {
- string raw = Guid.NewGuid().ToString("N").ToUpper();//生成raw16
- uploadingPerson = raw;
- }
- Random ra = new Random();
- return uploadingPerson + "_" + DateTime.Now.ToString("yyyyHHddHHmmss") + ra.Next().ToString();
- }
-
- #endregion 私有方法
- }
- }
|