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

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

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

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

重点是在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. java.lang.IllegalArgumentException: No converter found for return value of type: class XXX.XXXX

    最近项目中用到fastjson做接口数据的转换,发现报这个错误了,环境是springMVC4,看到阿里的官网说是“ 如果是使用 XML 的方式配置 Spring MVC 的话,只需在 Spring M ...

  2. 分享到微信、微博、QQ空间、QQ微博

    一:分享到微信 //分享到微信$("#weixin").bind("click", function () {    var p = {        url: ...

  3. Cannot find snapshot in models/VGGNet/VOC0712/SSD_300x300

    错误描述: 执行 python examples/ssd/ssd_pascal.py 报错: Cannot find snapshot in models/VGGNet/VOC0712/SSD_300 ...

  4. 利用Linux的Samba服务模拟NT域

    利用Linux的Samba服务模拟NT域 Samba是一个与Windows NT具有相同协议的软件包.我们可以利用Samba服务来模拟 Windows NT域,使用户从Windows计算机上直接使用一 ...

  5. iOS &quot;directory not found for option &#39;-L/Users/.../Pods/build/Debug-iphoneos&quot;解决方式

    问题重述: 在删掉原来工作空间,又一次install pods之后,遇到warning: ld: warning: directory not found for option '-L/Users/. ...

  6. HTTP和HTTPS的区别(转)

    原文链接:HTTP和HTTPS的区别 HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和 ...

  7. OpenCV教程(47) sift特征和surf特征

         在前面三篇教程中的几种角检测方法,比如harris角检测,都是旋转无关的,即使我们转动图像,依然能检测出角的位置,但是图像缩放后,harris角检测可能会失效,比如下面的图像,图像放大之前可 ...

  8. C++11 std::unique_lock与std::lock_guard区别及多线程应用实例

    C++多线程编程中通常会对共享的数据进行写保护,以防止多线程在对共享数据成员进行读写时造成资源争抢导致程序出现未定义的行为.通常的做法是在修改共享数据成员的时候进行加锁--mutex.在使用锁的时候通 ...

  9. 《UNIX环境高级编程》笔记--环境变量

    ISO C定义了一个函数getenv,可以用其取环境变量值. #include <stdlib.h> char* getenv(const char* name); //返回与name关联 ...

  10. WinCE程序调试方法【转】

    刚刚接触WinCE编程,感觉大部分跟WinForm一样.刚开始的时候,不知道怎么进行断点调试,后来同事告诉我,可以直接连接进行断点调试,一试之下,果然好用,所以拿出来分享一下. 必备工具: Micro ...