ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(10)之素材管理
生活随笔
收集整理的這篇文章主要介紹了
ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(10)之素材管理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
源碼下載地址:http://www.yealuo.com/Sccnn/Detail?KeyValue=c891ffae-7441-4afb-9a75-c5fe000e3d1c?
素材管理模塊也是我們這個項目的核心模塊,里面的增刪查改都跟文章管理模塊相同或者相似,唯一不同點可能是對附件的上傳處理,但沒有涉及到復雜的文件上傳,所以我們采用了原生的文件流的形式上傳,同時在做了文件在編輯的時候,如果重新上傳文件,我們將舊文件刪除,這樣可以釋放更多的服務器空間,以免造成大量垃圾文件堆積。
在創建之前,我們需要在表現層的SystemExtension下創建一個公共類BaseCommon.cs:
using System; using System.Collections; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Text.RegularExpressions; using System.Web;namespace IA.WebApp.SystemExtension {/// <summary>/// 通用方法/// </summary>public class BaseCommon{#region 解壓ZIP文件/// <summary> /// 解壓功能(解壓壓縮文件到指定目錄) /// </summary> /// <param name="fileToUnZip">待解壓的文件</param> /// <param name="zipedFolder">指定解壓目標目錄</param> /// <param name="password">密碼</param> /// <returns>解壓結果</returns> public static bool UnZip(string fileToUnZip, string zipedFolder, string password){bool result = true;FileStream fs = null;ICSharpCode.SharpZipLib.Zip.ZipInputStream zipStream = null;ICSharpCode.SharpZipLib.Zip.ZipEntry ent = null;string fileName;if (!File.Exists(fileToUnZip))return false;if (!Directory.Exists(zipedFolder))Directory.CreateDirectory(zipedFolder);try{zipStream = new ICSharpCode.SharpZipLib.Zip.ZipInputStream(File.OpenRead(fileToUnZip));if (!string.IsNullOrEmpty(password)) zipStream.Password = password;while ((ent = zipStream.GetNextEntry()) != null){if (!string.IsNullOrEmpty(ent.Name)){fileName = Path.Combine(zipedFolder, ent.Name);fileName = fileName.Replace('/', '\\');//change by Mr.HopeGi if (fileName.EndsWith("\\")){Directory.CreateDirectory(fileName);continue;}fs = File.Create(fileName);int size = 2048;byte[] data = new byte[size];while (true){size = zipStream.Read(data, 0, data.Length);if (size > 0)fs.Write(data, 0, size);elsebreak;}}}}catch{result = false;}finally{if (fs != null){fs.Close();fs.Dispose();}if (zipStream != null){zipStream.Close();zipStream.Dispose();}if (ent != null){ent = null;}GC.Collect();GC.Collect(1);}return result;}#endregion#region 搜索引擎自動推送/// <summary>/// 搜索引擎鏈接推送/// </summary>/// <param name="urls"></param>/// <returns></returns>public static string PostUrl(string[] urls){try{string formUrl = "http://data.zz.baidu.com/urls?site=www.yealuo.com&token=nvLhHxq4HKwgKoCQ";string formData = "";foreach (string url in urls){formData += url + "\n";}byte[] postData = System.Text.Encoding.UTF8.GetBytes(formData);// 設置提交的相關參數 System.Net.HttpWebRequest request = System.Net.WebRequest.Create(formUrl) as System.Net.HttpWebRequest;System.Text.Encoding myEncoding = System.Text.Encoding.UTF8;request.Method = "POST";request.KeepAlive = false;request.AllowAutoRedirect = true;request.ContentType = "text/plain";request.UserAgent = "curl/7.12.1";request.ContentLength = postData.Length;// 提交請求數據 System.IO.Stream outputStream = request.GetRequestStream();outputStream.Write(postData, 0, postData.Length);outputStream.Close();System.Net.HttpWebResponse response;System.IO.Stream responseStream;System.IO.StreamReader reader;string srcString;response = request.GetResponse() as System.Net.HttpWebResponse;responseStream = response.GetResponseStream();reader = new System.IO.StreamReader(responseStream, System.Text.Encoding.GetEncoding("UTF-8"));srcString = reader.ReadToEnd();string result = srcString; //返回值賦值reader.Close();return result;}catch (Exception ex){return ex.Message;}}#endregion} }同樣的步驟,首先我們創建一個名為AttachmentMangeController的控制器、Index.cshtml視圖,以及業務類Com_AttachmentBll.cs:
(1)AttachmentMangeController.cs
(2)Index.cshtml
@{ViewBag.Title = "素材管理";Layout = "~/Views/Shared/_LayoutMange.cshtml"; } <style>html {background-color: #f3f4f4;}.w_header .header-nav .nav-item li a.wzgl {border-bottom: 2px solid #2D81E0;background-color: #E8F4FF;color: #2D81E0;font-weight: bold;}.ContentKeyBox {padding-left: 85px;padding-top: 15px;line-height: 25px;}.ContentKeyBox a {margin: 5px;color: #666;display: inline-block;cursor: pointer;}.ContentKeyBox a:hover, .ContentKeyBox a.on {background-color: #0b234e;color: #fff;}.w_center .center-nav-item a.scgl {color: #156cd1;} </style> <div class="w_center clear mAuto">@Html.Partial("_PartialNav")<div class="center-main font-yahei R"><div class="center-main-nav"><a href="javascript:;" class="center-main-tag action" style="border-left:0 none;">素材編輯</a></div><div class="center-main-box" style="margin-top:0;"><div class="toolbarBox clear"><div id="searchForm" class="L searchForm"><span class="seachTit">素材標題:</span><input type="text" id="FileTitle" name="FileTitle" class="seachText" value="" /><a id="searchBtn" class="searchBtn" href="javascript:;" title="搜索"></a></div><div class="toolbar R"><input type="button" value="新增素材" class="addBtn greenBtn" οnclick="AddEditBtn(0,$(this))" /></div></div><ul class="list-ui clear" id="list-ui"></ul><div id="listPage" class="m_pageBar com_pageBar" style="padding:0 30px;"></div></div></div> </div>@*分頁數據模版*@ <script id="tempBody" type="text/template">{#each data as item}<li class="list-item"><div class="img-box"><img src="!{item.FileMinCover}" width="135" height="185" /><div class="list-mask"><a href="javascript:;" οnclick="AddEditBtn(1,$(this))" data-id="!{item.FileID}" class="list-btn list-edit L"><img src="/Content/Images/slice/edit.png" /> <span>編輯</span></a><a href="javascript:;" οnclick="delBtn($(this))" class="list-btn list-close R" data-id="!{item.FileID}"><img src="/Content/Images/slice/close.png" /> <span>刪除</span></a><a href="!{item.FileIndexUrl}" target="_blank" class="list-btn list-show L"><img src="/Content/Images/slice/show.png" /> <span>預覽</span></a></div></div><div class="list-title" title="!{item.FileTitle}">!{subString(item.FileTitle, 15)}</div></li>{#/each} </script>@*隱藏彈窗模版*@ <script id="ReplyEdit" type="text/template"><div style="margin:20px 20px;"><form id="form1" action="/BackstageModule/AttachmentMange/SubmitFormData" method="post" enctype="multipart/form-data" style="margin: 1px"><input type="hidden" id="KeyValue" name="KeyValue" /><table class="layer-table-form"><tr><td><span class="layer-form-tit">標題:</span><input type="text" name="FileTitle" class="layer-form-txt" id="FileTitle" datacol="yes" err="標題" checkexpession="NotNull" /></td></tr><tr><td><span class="layer-form-tit">金幣:</span><input type="text" name="Integral" class="layer-form-txt" id="Integral" datacol="yes" err="金幣" checkexpession="NumOrNull" /></td></tr><tr><td><span class="layer-form-tit">類型:</span><select name="FileType" class="layer-form-select" id="FileType" datacol="yes" err="類型" checkexpession="NotNull"><option value="">==請選擇==</option><option value="WEB">網站模板</option><option value="WAP">手機端</option><option value="H5C3">HTML5 CSS3</option><option value="WJS">網頁特效</option><option value="FLASH">flash素材</option><option value="PIC">網頁素材</option><option value="SYS">網站源碼</option></select></td></tr><tr><td><div class="layer-form-tit L">封面:</div><input type="text" name="FileCoverSet" id="FileCoverSet" class="layer-form-txt url1 L" readonly="readonly" style="display:none;" placeholder="請上傳.JPG|.JPEG|.PNG|.GIF|.BMP格式的圖片" datacol="yes" err="封面" /><input type="text" name="FileCover" id="FileCover" class="layer-form-txt url2 L" readonly="readonly" placeholder="請上傳.JPG|.JPEG|.PNG|.GIF|.BMP格式的圖片" datacol="yes" err="封面" /><div class="FileBox L"><input class="file upFile" type="file" name="FileCover" value="" οnchange="SetFileVal($(this))" /></div></td></tr><tr><td><div class="layer-form-tit L">附件:</div><input type="text" name="FileUrlSet" id="FileUrlSet" class="layer-form-txt url1 L" readonly="readonly" style="display:none;" placeholder="請上傳.zip格式的文件" datacol="yes" err="附件" /><input type="text" name="FileUrl" id="FileUrl" class="layer-form-txt url2 L" readonly="readonly" placeholder="請上傳.PDF|.DOC|.DOCX格式的文件" datacol="yes" err="封面" /><div class="FileBox L"><input class="file upFile" type="file" name="FileUrl" value="" οnchange="SetFileVal($(this))" /></div></td></tr><tr><td style="height:auto;vertical-align:top;"><div><span class="layer-form-tit">關鍵字:</span><input style="background-color:#efefef;border:0 none;width:405px;" type="text" name="ContentKey" class="layer-form-txt" id="ContentKey" datacol="yes" err="關鍵字" checkexpession="NotNull" readonly="readonly" /></div><div><span class="layer-form-tit">輸入關鍵字:</span><input type="text" class="layer-form-txt" id="SetContentKey" /><a style="display:inline-block;" class="addBtn yellowBtn" οnclick="SetContentKey($('#SetContentKey').val()); $('#SetContentKey').val('')">加入</a></div><div class="ContentKeyBox"></div></td></tr><tr><td><span class="layer-form-tit">介紹:</span><textarea name="Remarks" class="layer-form-txt" style="height:70px;" id="Remarks" datacol="yes" err="介紹" checkexpession="NotNull"></textarea></td></tr></table></form></div> </script>@*隱藏下載彈窗模版*@ <script id="DownList" type="text/template"><div style="margin:20px 20px;"><input type="hidden" id="KeyValue" name="KeyValue" /><table class="layer-table-form DownList"></table></div> </script> @section scripts{<script type="text/javascript">var KeyValue = "";$(function () {juicer.register('formatDate', formatDate);juicer.register('subString', subString);TagNavSet();getPageData();searchEvent();//getPageData2();});//菜單切換function TagNavSet() {$(".center-main-tag").on("click", function () {if (!$(this).hasClass("action")) {$(this).addClass("action").siblings(".center-main-tag").removeClass("action");$(".center-main-box").hide();$(".center-main-box").eq($(this).index()).show();}})}//初始化分頁函數function getPageData() {var param = {rows: 10,url: "/BackstageModule/AttachmentMange/GetTable",sidx: "CreateDate",sord: "DESC",searchForm: "#searchForm",infoPanel: '#list-ui',barPanel: '#listPage',template: '#tempBody',callback: handleSuccess}Pager.init(param);}//查詢按鈕綁定事件function searchEvent() {$("#searchBtn").on("click", function () {getPageData();});}//添加編輯彈窗function AddEditBtn(num, elem) {var allVal = "";if (num > 0) {allVal = elem.attr("data-id");}layer.open({title: "添加/編輯",type: 1,skin: 'layui-layer-rim', //加上邊框area: ['650px', '600px'], //寬高content: $("#ReplyEdit").html(),btn: ['保存', '取消'], //只是為了演示yes: function () {AcceptClick();}});InitControl(allVal);GetContentKey("");}//保存按鈕function AcceptClick() {if (!CheckDataValid('#form1', true)) {return false;}//提交表單$("#form1").ajaxSubmit({dataType: "json",beforeSubmit: function () {layer.msg('正在提交信息,請稍后…', { icon: 16, shade: 0.2, time: 0 });},success: function (data) {if (data.Success) {layer.msg(data.Message, { icon: data.Code, time: 1000 }, function () {layer.closeAll();getPageData();});}else {layer.alert(data.Message, { icon: data.Code });}}});}//刪除function delBtn(elem) {var allVal = elem.attr("data-id");layer.confirm("是否刪除這" + allVal.split(",").length + "條數據?", { icon: 0 }, function () {AjaxJson("/BackstageModule/AttachmentMange/DeleteOther", { KeyValue: allVal }, function (data) {layer.msg(data.Message, { icon: data.Code, time: 1000 }, function () {getPageData();});});});}//文件域選擇設置function SetFileVal(elem) {var part = elem.parents("td");if (!!elem.val()) {part.find(".url1").val(elem.val()).show().attr("checkexpession", "NotNull");part.find(".url2").hide().removeAttr("checkexpession");}else {part.find(".url1").show().attr("checkexpession", "NotNull");part.find(".url2").hide().removeAttr("checkexpession");}}//得到一個對象實體function InitControl(allVal) {AjaxJson("/BackstageModule/AttachmentMange/SetForm", { KeyValue: allVal }, function (data) {SetWebControls(data, "#form1");$("#KeyValue").val(data.FileID);$("#FileCover").attr("checkexpession", "NotNull");$("#FileUrl").attr("checkexpession", "NotNull");});}//分頁數據加載后綁定的函數function handleSuccess() {checkAll();}//全選(包括)function checkAll() {//全選按鈕$(".dataTable thead").find(".ckbAll").change(function () {var chkAll = $(this);var chkVal = chkAll.prop("checked");if (chkVal == "checked" || chkVal == true) {$(".dataTable tbody tr").each(function () {var chk = $(this).find(":checkbox");chk.prop("checked", "checked");});}else {$(".dataTable tbody tr").each(function () {var chk = $(this).find(":checkbox");chk.removeAttr("checked");});}});}//關鍵字設置function SetContentKey(val) {var _thisVal = $("#ContentKey").val();if (_thisVal.indexOf(val) > 0) {layer.msg("已包含該關鍵字", { icon: "-1", time: 2000 });}else if (!!val) {(!_thisVal) ? $("#ContentKey").val(val) : $("#ContentKey").val(_thisVal + "," + val);}}//獲取關鍵字function GetContentKey(title) {$.post("/BackstageModule/AttachmentMange/GetContentKey", { title: title }, function (data) {var strHtml = "";for (var i = 0; i < data.length; i++) {strHtml += "<a οnclick=\"SetContentKey('" + data[i].DataDictionaryTitle + "');$(this).addClass('on');\">" + data[i].DataDictionaryTitle + "</a>";}$(".ContentKeyBox").html(strHtml);}, "json")}</script>}(3)Com_AttachmentBll.css
using Bobo.DataAccess; using Bobo.Repository; using Bobo.Utilities; using IA.Entity; using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web;namespace IA.Business {// <summary> /// 素材表 /// <author> /// <name>YHB</name> /// <date>2018.10.18</date> /// </author> /// </summary> public class Com_AttachmentBll : RepositoryFactory<Com_Attachment>{/// <summary>/// 獲取附件數據/// </summary>/// <param name="ArticleTitle"></param>/// <param name="jgp"></param>/// <returns></returns>public DataTable GetTablePage(string FileTitle, ref JqGridParam jgp){StringBuilder whereSql = new StringBuilder();List<DbParameter> param = new List<DbParameter>();whereSql.Append(@" AND DeleteMark<>1");if (!StringHelper.IsNullOrEmpty(FileTitle)){whereSql.Append(@" AND FileTitle LIKE @FileTitle");param.Add(DbFactory.CreateDbParameter("@FileTitle", '%' + FileTitle + '%'));}return Factory.FindTablePage(whereSql.ToString(), param.ToArray(), ref jgp);}/// <summary>/// 獲取附件列表/// </summary>/// <param name="DataID"></param>/// <returns></returns>public List<Com_Attachment> GetAttachmentList(string DataID, int? topNum, string ByType){StringBuilder Sql = new StringBuilder();List<DbParameter> param = new List<DbParameter>();string where = "*";if (!StringHelper.IsNullOrEmpty(topNum) && topNum > 0){where = "TOP(" + topNum + ") *";}Sql.Append(@"SELECT " + where + " FROM Com_Attachment WHERE DeleteMark<>1");if (!StringHelper.IsNullOrEmpty(DataID)){Sql.Append(@" AND DataID=@DataID");param.Add(DbFactory.CreateDbParameter("@DataID", DataID));}if (!StringHelper.IsNullOrEmpty(ByType)){Sql.Append(@" ORDER BY " + ByType + " DESC");}return Factory.FindListBySql(Sql.ToString(), param.ToArray());}} }(4)效果預覽:
轉載于:https://www.cnblogs.com/boyzi/p/9963797.html
總結
以上是生活随笔為你收集整理的ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(10)之素材管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018最值得办的信用卡盘点 这三张卡不
- 下一篇: asp.net中提交表单数据时提示从客户