广告位是站点中不可缺少的内容之中的一个。也是能直接给我们站点带来经济收益的内容之中的一个。

好的广告位不仅不会强宾压主,而会为我们的站点锦上添花。起到画龙点睛的作用。因此设计好广告位也是开发过程中一大重要环节。

近期在做一个珠宝检測站的项目,当中管理页面就涉及到了广告位管理,之前项目中也有不少有广告位的,但都不是自己负责。其大致思路就是要从管理页面上传对应的图片,而且要保存到数据库,然后从全部上传过的图片中选择一张显示到站点首页。

原理并不太难,可是鉴于性能问题,我们仅仅须要数据库保存图片的路径就可以。

重点是在MVC+WCF这种框架之下。可能略微有点难度。经过网上博友的分享以及团队内交流,实现了最主要的上传和保存数据库功能。站点首页有五个广告位。因为广告位的位置以及尺寸不同,当然收费标准也是不一样的。哈哈~~我们初步设计每个广告位有单独的管理单元,我的详细实现是广告位的管理页面有五个Datagrad,每个表格用来显示数据库中保存的本类广告位的图片路径以及对应信息。

例如以下图:

表格中显示数据库全部数据,通过操作是否显示列的单选button来确定首先显示哪一张广告图片。(须要把单选button的name属性统一命名,整个表格的单选button设为一组)

这里我们重点说的就是文件上传,为什么仅仅在数据库保存路径而不直接保存图片呢?首先这是大多数开发者的做法,其次从一定程度上保存路径要比图片性能高一些。我实在MVC中实现的,话不多说。直接上代码。

View

<h2>上传文件</h2>
@using(Html.BeginForm("FileUpLoad","AdvertisementManage",FormMethod.Post,new{enctype="multipart/form-data"}))
{
<br />
@*输入赞助商名称*@<input type="text" name="AdvertisementName" />
@*上传文件*@<input type="file" name="file" />
@*提交*@<input type="submit" name="UploadFile" />
}

Controller

        public  ActionResult FileUpLoad()
{
HttpPostedFileBase file = Request.Files["file"];//获得上传文件 //推断文件内容是否为空
if (file != null)
{
string filePath = Path.Combine(HttpContext.Server.MapPath("../images"), Path.GetFileName(file.FileName)); //设置文件保存路径
file.SaveAs(filePath);//将文件保存到filePath路径下 Guid g = new Guid("6dc3f7db-f038-4c48-9564-0ac52e0e29c1"); //实例化viewmodel,给属性赋值
AdvertisementManageViewModel advertisement=new AdvertisementManageViewModel();
advertisement .AdvertisementID=System.Guid.NewGuid();
advertisement.AdvertisementName = Request.Form["AdvertisementName"];
advertisement.AdvertisementUrl = filePath;
advertisement.TimeStamp = DateTime.Now;
advertisement.UserID = g;
advertisement.IsEnable = 0; var service = ServiceFactory.GetService();//声明WCF服务
var s = service.AddAdvertisement(advertisement);//调用服务端的加入方法,将广告内容保存到数据库 //假设保存成功,返回FileUpLoad视图
if (true)
{
return RedirectToAction("FileUpLoad", "AdvertisementManage");
} }
else
{
//return Content("<script>alert('上传失败!')</script>");
return View();
}
}

效果图

以上这些都是眼下实现的功能,样式上和逻辑上都须要优化,简单的原理分享给大家。有不足之处请批评指正。

MVC+WCF框架下广告位管理——文件上传的更多相关文章

  1. node.js 在 Express4.0 框架使用 Connect-Busboy 实现文件上传

    node.js下四种post提交数据的方式 今天说分享的是其中一种,就是上传文件. Express 4.0 以后,将功能原子化,高内聚,低耦合,独立出了很多中间件 今天主要分享文件上传 对于conne ...

  2. 自定义MVC框架之工具类-文件上传类

    截止目前已经改造了3个类: ubuntu:通过封装验证码类库一步步安装php的gd扩展 自定义MVC框架之工具类-分页类的封装 该文件上传类功能如下: 1,允许定制上传的文件类型,文件mime信息,文 ...

  3. Spring 4 官方文档学习(十一)Web MVC 框架之multipart(文件上传)支持

    http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-multipart 1.简 ...

  4. SSM框架下,使用ajax请求上传文件(doc\docx\excel\图片等)

    1.准备工作 1.1.添加上传必要jar包 <dependency> <groupId>commons-io</groupId> <artifactId> ...

  5. PHP之ThinkPHP框架(验证码、文件上传、图片处理)

     验证码 验证码是框架自带有的,比之前使用GD库简单方便许多,其实现原理基本相似,都是生成图片,保存验证码值到Session中,表单提交验证码,然后进行值的对比验证. 简单的显示: <form ...

  6. java框架篇---struts之文件上传和下载

    Struts2文件上传 Struts 2框架提供了内置支持处理文件上传使用基于HTML表单的文件上传.上传一个文件时,它通常会被存储在一个临时目录中,他们应该由Action类进行处理或移动到一个永久的 ...

  7. WCF 使用Stream模式进行文件上传 --节选自Packt.Net.Framework.4.5.Expert.Programming.Cookbook

    使用Stream上传文件 文件上传功能是web程序/服务上常用和必须的功能,WCF也不例外.在4.0版本之前,WCF仅仅提供了buffered模式上传文件.从4.0版本之后,WCF开始提供了Strea ...

  8. Spring Mvc 笔记二之异常和文件上传

    spring mvc的异常与文件上传 1.异常: spring注解版的异常有局部异常和全局异常                1.局部异常对单个controller有效;(在controller类写一 ...

  9. 6月19 使用tp框架生成验证码及文件上传

    ThinkPHP中自带能生成验证码的类:ThinkPHP/Library/Think/Verify.class.php 默认情况下,验证码的字体是随机使用 ThinkPHP/Library/Think ...

随机推荐

  1. 摩登家庭第一季/全集Modern Family迅雷下载

    本季Modern Family Season 1 第一季(2009)看点:<摩登家庭>瞄准的是三对各有不同的美国家庭:一对普通父母与三个孩子.一对同性恋夫夫从越南领养了养女组成三口之家,一 ...

  2. Xcode修改项目的Build Location

    Xcode默认project通过build输出的目录,存放于目录 /Users/用户名/Library/Developer/Xcode/DerivedData/产品名称-hjwqiconnjhpjle ...

  3. RecyclerView常见问题解决方案,RecyclerView嵌套自动滚动,RecyclerView 高度设置wrap_content 无作用等问题

    1,ScrollView或者RecyclerView1 嵌套RecyclerView2  进入页面自动跳转到recyclerView2上面页面会自动滚动貌似是RecyclerView 自动获得了焦点两 ...

  4. SQL中树形分层数据的查询优化

    在数据查询中,从2008开始SQL Server提供了一个新的数据类型hierarchyid,专门用来操作层次型数据结构. hierarchyid  类型对层次结构树中有关单个节点的信息进行逻辑编码的 ...

  5. Asp.Net Mvc Action过滤器(二)

    在Mvc中为Action添加过滤器,有两种方式, 一.使用ActionFilterAttribute,简单方式,同时支持Result的过滤处理, 1.可以为空,支持的重写:OnActionExecut ...

  6. Git: Push rejected 的解决方案

    Push rejected: Push to origin/master was rejected 首先,git init (在工程文件夹下) git remote add [-t <branc ...

  7. NOIP2016 酱油记

    2016.11.17 考试前最后一个周四.然而我仍旧蒟蒻... 2016.11.18 周五,上午自家开车跑到晋城,中午12点到宾馆.下午4点去机房试机,先写了个线性筛,结果c++报错!?重开机,写个a ...

  8. ConcurrentHashMap和HashMap的区别

    (1)ConcurrentHashMap对整个桶数组进行了分段,而HashMap则没有 (2)ConcurrentHashMap在每一个分段上都用锁进行保护,从而让锁的粒度更精细一些,并发性能更好,而 ...

  9. AS 注解处理器 APT Processor MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  10. Android -- SpannableString

    SpannableString Android通过SpannableString类来对EditText和TextView的指定文本进行处理. ForegroundColorSpan 文本颜色 priv ...