配置ACCESS_KEY和SECRET_KEYjavascript
Qiniu.Conf.Config.ACCESS_KEY = "ACCESS_KEY"; Qiniu.Conf.Config.SECRET_KEY = "SECRET_KEY";
這個簡單,由於七牛的JS SDK就是使用了Plupload 點擊查看官方文檔html
七牛強烈建議去咱們本身的服務器獲取token,這裏咱們使用C# SDK裏的教程java
/// <summary> /// 獲取token /// <param name="bucket">空間名</param> /// </summary> public string GetUpToken(string bucket) { //普通上傳,只須要設置上傳的空間名就能夠了,第二個參數能夠設定token過時時間 var putPolicy = new PutPolicy(bucket); //調用Token()方法生成上傳的Token var upToken = putPolicy.Token(); return upToken; }
使用UEditor是能夠實現客戶端直傳到七牛的,使用JS SDK重寫UEditor的全部上傳按鈕(參考UEditor官方文檔)。git
可是太麻煩了,成本過高,個人項目的瓶頸是在下載而不是在上傳,因此我沒有實現UEditor直傳文件到七牛,而是使用服務器中轉文件流到七牛。github
直接上代碼:json
/// <summary> /// 上傳 /// </summary> /// <param name="bucket">空間名</param> /// <param name="contentStream">流</param> /// <param name="key">文件名</param> /// <returns></returns> public bool Upload(string bucket, Stream contentStream, string key) { var target = new IOClient(); var extra = new PutExtra(); var putPolicy = new PutPolicy(bucket, 3600); var upToken = putPolicy.Token(); var ret = target.Put(upToken, key, contentStream, extra); return ret.OK; }
在UploadHandler.cs找到如下代碼服務器
var savePath = PathFormatter.Format(uploadFileName, UploadConfig.PathFormat);
並在該行下方添加如下代碼架構
try { var key = savePath;//這裏使用了UEditor生成的文件名(帶路徑,能夠在ueditor\net\config.json中自定義),也能夠本身使用代碼生成 using (var memoryStream = new MemoryStream(uploadFileBytes)) { //1.能夠實現你項目自己的一些業務,好比將文件信息存入一個單獨的附件表 //2.調用上面的Upload方法 var bucket = "{你七牛上的空間名稱}"; ****.Upload(bucket, memoryStream,key); } var bucketDomainUrl = "{您七牛上的空間對應的域名,用於下載}"; Result.Url = bucketDomainUrl + savePath; Result.State = UploadState.Success; } catch (Exception e) { Result.State = UploadState.FileAccessError; Result.ErrorMessage = e.Message; }
具體代碼的細節和架構相關,可參考本身的項目而定,本人使用ABP(ASP.NET Boilerplate),可輕鬆實現領域服務和應用服務的注入。spa