国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

百度文本編輯器 Ueditor for net 使用七牛存儲附件的實現

2019-11-17 01:39:10
字體:
來源:轉載
供稿:網友

百度文本編輯器 Ueditor for net 使用七牛存儲附件的實現

百度編輯器功能強大,確實好用,可惜附件使用本地存儲,如果網站的用戶量巨大,則會使得網站目錄變得非常龐大,而且文件不易于管理,七牛云存儲在附件存儲方面下了不少功夫,用起來感覺不錯,要是將ueditor 的附件存儲改為七牛,那就解決大量帖子的附件存儲問題了

下載新版的 ueditor for net , 解壓后直接將ueditor目錄復制到mvc 項目目錄的根目錄下

接下來查看 /ueditor/net/app_code/uploadHandler.cs,找到下面這段保存附件的代碼

 try        {            if (!Directory.Exists(Path.GetDirectoryName(localPath)))            {                Directory.CreateDirectory(Path.GetDirectoryName(localPath));            }            File.WriteAllBytes(localPath, uploadFileBytes);            Result.Url = savePath;            Result.State = UploadState.Success;        }        catch (Exception e)        {            Result.State = UploadState.FileaccessError;            Result.ErrorMessage = e.Message;        }        finally        {            WriteResult();        }

在代碼中,可以看到文件被保存在 localPath 中,好吧,開始修改

 try        {            if (!Directory.Exists(Path.GetDirectoryName(localPath)))            {                Directory.CreateDirectory(Path.GetDirectoryName(localPath));            }            //File.WriteAllBytes(localPath, uploadFileBytes);            //Result.Url = savePath;           #region < -- 將服務器端文件上傳至七牛 -- >            OssService oss = new OssService();            Attachment attc = new Attachment();            FileInfo fi = new FileInfo(uploadFileName);            attc.FileName = fi.Name;            attc.FileExt = fi.Extension;            attc.RelationId = RelationId;            attc.UserName = OwnerName;            attc.Uploaddate = DateTime.Now;            attc.AttachmentType = AttachmentType.goods;            oss.PutFileToQiniu(localPath, attc);            #endregion            Result.Url = attc.FileUrl;            Result.State = UploadState.Success;        }        catch (Exception e)        {            Result.State = UploadState.FileAccessError;            Result.ErrorMessage = e.Message;        }        finally        {            WriteResult();        }    

  

OssService 是我項目中一個七牛云存儲的文件控制邏輯,具體代碼懶得貼出來了,也就是引用七牛的.net 開發包,將文件從服務端保存到七牛云端,用過七牛的都知道怎么回事。Attachment 是我項目中的一個附件對象,處理邏輯已經包含在OssService中了。

這里細心的朋友也許就會發現,代碼中使用了OwnerName 和 RelationId 兩個變量,這兩個變量也就是當前網站用戶的用戶名,還有這個附件相關聯的帖子 Id 了,可是在這里怎么得到呢?其實 ueditor 已經給出了擴展的方法,我這里簡單提一下,你需要修改uploadHandler 的構造函數,如下

public UploadHandler(HttpContext context, UploadConfig config)        : base(context)    {        this.UploadConfig = config;        RelationId = context.Request["RelationId"] != null ? context.Request["RelationId"].ToString() : "";        OwnerName = context.Request["OwnerName"] != null ? context.Request["OwnerName"].ToString() : "";        this.Result = new UploadResult() { State = UploadState.Unknown };    }

 

然后呢,修改ueditor 的初始化代碼將這兩個變量傳進來

<script id="container" name="content" type="text/plain">                    @Html.Raw(Model.DescriptionDetail)                </script>                <!-- 配置文件 -->                <script type="text/javascript" charset="utf-8" src="~/ueditor/ueditor.config.js"></script>                <!-- 編輯器源碼文件 -->                <script type="text/Javascript" charset="utf-8" src="~/ueditor/ueditor.all.js"></script>                <!-- 實例化編輯器 -->                <script type="text/javascript">                    var ue = UE.getEditor('container');                    ue.ready(function(){                        ue.execCommand('serverparam', {                            'RelationId': '@Model.ShopId',                            'OwnerName': '@User.Identity.Name'                        });                    });                                    </script>

其實ueditor 已經為我們做好了擴展的接口啦,初始化ueditor 時將這兩個變量作為 serverparam 配置好就行了

現在,基本已經可以正常工作了,暫時還是滿意的,不過使用中發現如果在ueditor 中使用單個文件上傳的功能,發現返回的url 不對,url為 "/ueditor/net/http://xxxx..." ,原來ueditor 自動為我們返回的圖片url 添加了前綴,導致編輯時圖片不正常,不過要解決這個很簡單,直接找到/ueditor/net/config.json ,將imageUrlPRefix 從 "/ueditor/net/" 修改為 "" 就好了。

現在上傳文件是搞掂了,下來就是附件列表的問題了。修改 /ueditor/net/app_code/listHandler.cs ,找到這段代碼

 1 try 2         { 3             var localPath = Server.MapPath(PathToList); 4             buildingList.AddRange(Directory.GetFiles(localPath, "*", SearchOption.AllDirectories) 5                 .Where(x => SearchExtensions.Contains(Path.GetExtension(x).ToLower())) 6                 .Select(x => PathToList + x.Substring(localPath.Length).Replace("http://", "/"))); 7             Total = buildingList.Count; 8             FileList = buildingList.OrderBy(x => x).Skip(Start).Take(Size).ToArray(); 9             10         }

 1 try 2         { 3             //var localPath = Server.MapPath(PathToList); 4             //buildingList.AddRange(Directory.GetFiles(localPath, "*", SearchOption.AllDirectories) 5             //    .Where(x => SearchExtensions.Contains(Path.GetExtension(x).ToLower())) 6             //    .Select(x => PathToList + x.Substring(localPath.Length).Replace("http://", "/"))); 7             //Total = buildingList.Count; 8             //FileList = buildingList.OrderBy(x => x).Skip(Start).Take(Size).ToArray(); 9             OssService oss = new OssService();10             Total = oss.GetShopFilesCount(SearchExtensions, RelationId);11             FileList = oss.GetShopFiles(SearchExtensions, RelationId, Start, Size).ToArray();12         }

好了,一切ok ,目前用著還可以,唯一不爽的就是 ueditor 的上傳附件管理窗口中竟然沒有刪除附件的功能,惡心,有時間再改吧


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鹤山市| 彰武县| 襄汾县| 蒙阴县| 孟州市| 陇南市| 巩义市| 西林县| 景德镇市| 禄丰县| 苍山县| 芮城县| 莱阳市| 武宁县| 韶关市| 平潭县| 武冈市| 郓城县| 绍兴县| 黑龙江省| 长岭县| 玛沁县| 襄樊市| 阿拉尔市| 玛曲县| 饶阳县| 洪雅县| 沁源县| 抚松县| 三门峡市| 中西区| 台东市| 湾仔区| 新龙县| 子洲县| 陆川县| 巩留县| 界首市| 虎林市| 长沙市| 兴文县|