一、这篇文章主要是要实现:图片新闻的添加,无刷新图片的上传,以及添加新闻静态页的生成。

    1. 无刷新图片的上传用到的组件:jquery.uploadify.js、uploadify.swf、uploadify.css。
    2. 文本编辑器:ckeditor、ckfinder。
    3. 前台图片无缝滚动:jquery.switchable[all].min.js,前一篇有介绍
    4. 静态页的生成:其实有多种方式,最常见的:(1)WebClient中有个方法,下载Html到本地。(2)StreamWriter,以流的方式输出。这里 介绍第二种,StreamWriter。
    5. 静态页生成分页(补充):由于有些文章篇幅过长,就得使用到分页。提示:Ckediter中有个分页按钮(但是得在代码中正则匹配)。
    6. 制作静态页思路:首先预先定义一个.html模版,然后StreamReader读取,Replace掉要换的地方(如:标题,日期,内容.....),接着StreamWriter到本地。
    7. “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统   第六篇(图片新闻的添加以及带分页的静态页的生成)

                                        “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统   第六篇(图片新闻的添加以及带分页的静态页的生成)

                             添加完之后前台显示滚动图片:如下图  

                                         “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统   第六篇(图片新闻的添加以及带分页的静态页的生成)

 

 

                                   添加完新闻之后生成的静态页:如下图

                                            “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统   第六篇(图片新闻的添加以及带分页的静态页的生成)

                                        由于篇幅过长:添加完新闻之后生成的“分页”静态页:如下图:

                                             “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统   第六篇(图片新闻的添加以及带分页的静态页的生成)

二、实现上面“图片新闻添加”的功能:        

 

    1.    添加HomeController,添加AddImage Action。  
    2. 方法上添加[ValidateInput(false)]该值指示是否启用验证
    3. HttpPostedFileBase[] photo,表示前台传入name为上传的文件。其中(ContentLength:获取上传文件的大小,ContentType:获取上传文件的 MIME 内容类型,FileName:上传的文件名,SaveAs:保存上载文件的内容
    4. 接着判断上传的内容进行判断是否为空,进行校验,当然在前台使用Jquery.也可以(推荐使用),因为MVC中本身提供了校验,MicrosoftAjax.js、MicrosoftMvcAjax.js、MicrosoftMvcValidation.js。结合Model属性的ComponentModel。
    5. XElement,我这个项目使用的XML保存图片的信息(最重要:图片的路径),所以使用.Load()来加载我的XML,使用SetElementValue设置图片的信息。
                              
 public ActionResult AddImage()
        {
            return this.View();
        }
        [HttpPost]
        [ValidateInput(false)]
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult AddImage(FormCollection collection, string filepath, int? filesize, HttpPostedFileBase[] photo)
        {
            HomeImage hHomeImage = new HomeImage();
            TryUpdateModel(hHomeImage, collection);
            hHomeImage.ImgUrl = filepath;
            if (hHomeImage.Name.IsNullOrEmpty())
            {                
                return View("AddImage", hHomeImage);
            }
            if (hHomeImage.Content.IsNullOrEmpty())
            {
                
                return View("AddImage", hHomeImage);
            }
            if (filepath.IsNullOrEmpty() && hHomeImage.ImgUrl.IsNullOrEmpty())
            {
               
                return View("AddImage", hHomeImage);
            }

            ViewData["PhotoUrl"] = hHomeImage.ImgUrl;
            if (filesize != null)
                hHomeImage.ImgSize = filesize / 1024;
            else
                hHomeImage.ImgSize = 0;
            hHomeImage.InputTime = DateTime.Now;
            hHomeImageRepository.Save(hHomeImage);
            if (photo!=null)
            {
                foreach (var item in photo)
                {

                    if (item != null)
                    {
                        var extention = Path.GetExtension(item.FileName);
                        if (extention == ".aspx" || extention == ".html" || extention == ".exe" || extention == ".asp" || extention == ".jsp" || extention == ".js" || extention == ".htm" || extention == ".php")
                        {
                            return Content("<script>alert('不能上传这类型文件')</script>");
                        }
                        NewFile newFile = new NewFile();
                        string fileName = DateTime.Now.ToString("yyyyMMddhhmm") + "_img_" + Path.GetFileName(item.FileName);
                        newFile.NewId = hHomeImage.ID;
                        newFile.Name = fileName;
                        newFile.FileSize = item.ContentLength;
                        newFile.isImg = true;
                        item.SaveAs(Server.MapPath("~/UpLoadFiles/" + fileName));//保存到物理路径
                        newFileBLL.Save(newFile);//保存新闻附件
                    }
                }
            }
            hHomeImage.HtmlUrl = "/ljzcHtml/" + DateTime.Now.ToString("yyyyMMddHHmm") + "hmIndex" + hHomeImage.ID + ".htm";//静态页地址
            hHomeImageRepository.Update(hHomeImage);//修改图片表
            this.isHtmlPage(hHomeImage);//分页
            XElement xe = XElement.Load(Server.MapPath(path));
            XElement element = new XElement(XName.Get("img"));
            element.SetElementValue("id", DateTime.Now.ToString("yyyyMMddhhmmssfff"));
            element.SetElementValue("title", hHomeImage.Name);
            element.SetElementValue("path", filepath);
            xe.Add(element);
            xe.Save(Server.MapPath(path));
            return Content("<script>window.parent.afterImage();</script>");
            
        }
后台“Home/AddImage”方法

相关文章:

  • 2021-05-31
  • 2021-12-13
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-21
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-02-14
  • 2021-07-04
  • 2022-12-23
  • 2021-08-01
  • 2021-10-07
  • 2022-12-23
相关资源
相似解决方案