項目中須要實如今Ueditor編輯器中將圖片上傳到雲儲存中html
如今雲計算產品服務已經很廣泛,市場產品也有不少選擇,感興趣的同窗能夠去搜索下雲存儲,這裏我選擇了阿里雲的對象存儲服務,他們叫作阿里雲 OSS(Object Storage Service),實現以前我簡單的說下幾個概念,加深本身的理解程序員
1.一、什麼是雲存儲安全
雲存儲是在雲計算(cloud computing)概念上延伸和發展出來的一個新的概念,是一種新興的網絡存儲技術,是指經過集羣應用、網絡技術或分佈式文件系統等功能,將網絡中大量各類不一樣類型的存儲設備經過應用軟件集合起來協同工做,共同對外提供數據存儲和業務訪問功能的一個系統。當雲計算系統運算和處理的核心是大量數據的存儲和管理時,雲計算系統中就須要配置大量的存儲設備,那麼雲計算系統就轉變成爲一個雲存儲系統,因此雲存儲是一個以數據存儲和管理爲核心的雲計算系統。簡單來講,雲存儲就是將儲存資源放到雲上供人存取的一種新興方案。使用者能夠在任什麼時候間、任何地方,透過任何可連網的裝置鏈接到雲上方便地存取數據。——資料來自百度百科(雲存儲)服務器
簡單的來講,如今大型網站開發大都採用這樣的架構方式(分佈式文件系統),圖片、文件、資料上傳到雲存儲,提供雲存儲服務的公司有專業的團隊來幫你維護你的資源、安全可靠、價格較低。cookie
1.二、對象存儲有那些具體的優勢網絡
一張圖讓你快速瞭解對象存儲——圖片截取自阿里雲OSS首頁架構
1.三、爲何大型網站選擇將圖片等放入單獨的域名(雲存儲的使用)編輯器
1.3.一、下降主站服務器的壓力,分流。分佈式
1.3.二、能夠下降cookie的流量佔用。ide
1.3.三、CDN(將源站內容分發至全國全部的節點,縮短用戶查看對象的延遲,提升用戶訪問網站的響應速度與網站的可用性,解決網絡帶寬小、用戶訪問量大、網點分佈不均等問題)。
1.3.四、安全性高(各個服務公司都有對數據進行備份和安全機制處理)
1.3.四、雲存儲價格較低,隨用隨升,按量定製。
能夠看出好處仍是不少的,話很少說,進入正題,
1.四、開通服務在使用以前,咱們先弄清楚 OSS 的幾個基本概念。
1.4.一、咱們上傳的全部數據文件在OOS上以對象(object)的形式上傳到存儲空間(bucket)中。 因此咱們至少建立一個存儲空間,而後向每一個存儲空間中添加一個或多個文件。
1.4.二、已上傳文件以(bucket+endpoint爲地址)進行文件的分享和下載。經過修改存儲空間或文件的屬性或元信息,還能夠設置相應的訪問權限。
1.4.三、阿里雲OSS在管理控制檯管理和執行基本和高級 OSS 任務,您還能夠經過阿里雲開發工具包或經過直接在應用程序中進行 REST API 調用執行基本和高級 OSS 任務。(這裏我在項目中使用API調用服務)
接下來咱們下載 官網提供 的.NET SDK
安裝的方式有不少種
解決方案中右擊
再下圖搜索框輸入須要安裝的SDK包(輸入阿里雲或aliyun.oss.sdk)、點擊安裝便可,只要選擇安裝到指定的項目中便可。一鍵導入很方便有木有
安裝完成
1、下面開始改造Ueditor上傳圖片的服務(安裝配置過程參照官網文檔)
1 //上傳到阿里雲 2 using (Stream fileStream = new MemoryStream(uploadFileBytes))//轉成Stream流 3 { 4 var fs = Request.Files[UploadConfig.UploadFieldName]; 5 string md5 = OssUtils.ComputeContentMd5(fileStream, fs.ContentLength); 6 string today = DateTime.Now.ToString("yyyyMMdd"); 7 string FileName = uploadFileName + today + Path.GetExtension(uploadFileName);//文件名=文件名+當前上傳時間 8 string FilePath = "Upload/" + today + "/" + FileName;//雲文件保存路徑 9 try 10 { 11 //初始化阿里雲配置--外網Endpoint、訪問ID、訪問password 12 OssClient aliyun = new OssClient("https://oss-cn-【外網Endpoint區域】.aliyuncs.com", "your Access Key ID", "your Access Key Secret"); 13 14 //將文件md5值賦值給meat頭信息,服務器驗證文件MD5 15 var objectMeta = new ObjectMetadata 16 { 17 ContentMd5 = md5, 18 }; 19 //文件上傳--空間名、文件保存路徑、文件流、meta頭信息(文件md5) //返回meta頭信息(文件md5) 20 aliyun.PutObject("bucketName", FilePath, fileStream, objectMeta); 21 22 //返回給UEditor的插入編輯器的圖片的src 23 Result.Url = "http://bucketName.oss-cn-【外網Endpoint區域】.aliyuncs.com/" + FilePath; 24 Result.State = UploadState.Success; 25 } 26 catch (Exception e) 27 { 28 Result.State = UploadState.FileAccessError; 29 Result.ErrorMessage = e.Message; 30 } 31 finally 32 { 33 WriteResult(); 34 } 35 }
查看Object內容,成功上傳到OSS。