ASP.NET MVC上传文件----uploadify的使用
课程设计需要实现上传文件模块,本来ASP.NET是有内置的控件,但是ASP.NET MVC没有,所以就有两种方法:自定义和采用第三方插件。由于时间的关系,故采用第三方插件:uploadify。
uploadify的使用必须下载相应的文件,下载地址:http://www.uploadify.com/download/。
先是视图:

- <asp:Content ID="Content3" ContentPlaceHolderID="head" runat="server">
- <script src="/Scripts/swfobject.js" type="text/javascript"></script>
- <script src="/Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
- <script src="/Scripts/jquery.uploadify.v2.1.0.min.js" type="text/javascript"></script>
- <link href="/Content/uploadify.css" rel="stylesheet" type="text/css" />
- <style type="text/css">
- .SuccessText
- {
- color: Red;
- font-weight: bold;
- }
- .FaileText
- {
- color: Green;
- font-weight: bold;
- }
- </style>
- <script type="text/javascript">
- $(function () {
- $('#fileInput1').uploadify({
- 'uploader': '/Content/uploadify.swf',
- 'script': '/Home/LoadFile',
- 'folder': '/UploadFiles',
- 'cancelImg': '/Content/cancel.png',
- 'sizeLimit': 1024 * 1024 * 4, //4M
- 'multi': true,
- 'onComplete': Complete
- });
- });
- function Complete(event, queueID, fileObj, response, data) {
- if (response != "") {
- showInfo("成功上传" + response, true);
- }
- else {
- showInfo("文件上传出错!", false);
- }
- }
- //显示提示信息,SuccessText为绿色,即上传成功;FalseText为红色,即上传失败 function showInfo(msg, type) {
- var msgClass = type == true ? "SuccessText" : "FaileText";
- $("#result").removeClass();
- $("#result").addClass(msgClass);
- $("#result").html(msg);
- }
- //如果点击‘导入文件’时选择文件为空,则提示
- function checkLoad() {
- if ($.trim($('#fileInput1Queue').html()) == "") {
- alert('请先选择要上传的文件!');
- return false;
- }
- return true;
- }
- </script>
- </asp:Content>
- <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
- <div>
- <p>
- <input id="fileInput1" name="fileInput1" type="file" />
- </p>
- <p style="margin-top: 5px; font-size: 14px; font-weight: bold;">
- <a href="javascript:if(checkLoad()){$('#fileInput1').uploadifySettings('scriptData',{'name':$('#test').val()});$('#fileInput1').uploadifyUpload();}">上传</a>
- </p>
- <p style="margin-top: 5px; font-size: 14px; font-weight: bold;"><span id="result"></span></p>
- </div>
- </asp:Content>

考虑到其他人的工作是基于ASP.NET引擎的,所以我的视图也是采用该视图引擎。
视图中最重要的部分就是javascript代码部分:
uploader:就是uploadify.swf文件的相对路径,所谓的swf文件就是一个带有文字("浏览")的按钮,该按钮点开就是一个文件对话框,供用户选择要上传的文件。
script:后台处理程序的相对路径,也就是我们用户处理上传文件数据的Action。
folder:上传文件存放的目录。
cancelImg:该图片点击可以取消上传。
sizeLimit:上传文件的大小限制。
multi:设置为true时可以同时上传多个文件。
onComplete:文件上传完后的触发事件,一共有5个参数,重点在于后面两个:response为后台处理程序返回的值,如果为空,说明文件上传失败。data有两个属性:fileCount表示剩余没有上传完成的文件的个数,speed表示文件上传的平均速率(kb/s)。我们这里的onComplete函数很简单,就是简单的判断文件是否上传成功。
还有两个很重要的属性:fileExt和fileDesc。它们必须一起使用,并且值是一样的,因为它们规定的就是选择上传的文件类型。fileExt设置可以选择的文件类型,其实就是文件的扩展名。fileDesc用来设置选择文件对话框中的提示文本,也就是我们一般在选择文件的时候,都会有一个文件类型,而fileDesc能人为规定该文件类型是什么。这里之所以没有用到这两个属性,是因为我默认选择所有文件,但如果模块只要求上传图片格式,那么我们就可以通过这两个属性达到文件过滤了。
效果图:
值得注意的是,如果出现这样的界面:
说明swfobject.js没有添加正确。
如果是这样:
则是jquery-1.4.1.min.js或者jquery.uploadify.v2.1.0.min.js没有添加正确。这种情况可以选择文件,但是无法上传,之前出现这样的错误,导致我以为是我的浏览器无法上传文件,以致走了很多弯路,搞了很多配置,其实就是没有正确导入相应的js文件。
接着就是Action:

- [HttpPost]
- public ContentResult LoadFile(HttpPostedFileBase FileData, string folder, string name)
- {
- string result = "";
- if (null != FileData)
- {
- try
- {
- result = Path.GetFileName(FileData.FileName);//获得文件名
- string extension = Path.GetExtension(FileData.FileName);//获得文件扩展名
- string saveName = FileData.FileName + extension;//实际保存文件名
- saveFile(FileData, folder, saveName);//保存文件
- }
- catch
- {
- result = "";
- }
- }
- return Content(result);
- }
- [NonAction]
- private void saveFile(HttpPostedFileBase postedFile, string filepath, string saveName)
- {
- string phyPath = Request.MapPath("~" + filepath + "/");
- if (!Directory.Exists(phyPath))
- {
- Directory.CreateDirectory(phyPath);
- }
- try
- {
- postedFile.SaveAs(phyPath + saveName);
- }
- catch (Exception e)
- {
- throw new ApplicationException(e.Message);
- }
- }

这部分的内容很简单,就是从FileData中取出文件名和扩展名,然后保存起来而已。由于涉及到文件I/O,所以需要添加命名空间System.IO。
大概就是这样,具体的大家还是得去看官方文档。
ASP.NET MVC上传文件----uploadify的使用的更多相关文章
- asp.net MVC 上传文件 System.Web.HttpException: 超过了最大请求长度
APS.NET MVC 上传文件出现 System.Web.HttpException: 超过了最大请求长度 这个问题 原因是 默认最大上传文件大小为4096,而我提交的文件太大了. 解决方案:修改 ...
- ASP.NET MVC上传文件
最近参考网络资料,学习了ASP.NET MVC如何上传文件.最基本的,没有用jQuery等技术. 1.定义Model public class TestModel { [Displ ...
- asp.net mvc 上传文件
转至:http://www.cnblogs.com/fonour/p/ajaxFileUpload.html 0.下载 http://files.cnblogs.com/files/fonour/aj ...
- ASP.NET MVC上传文件 未显示页面,因为请求实体过大。解方案
在Dropzone中设置 maxFilesize: 350, //MB 但上传的文件没有到最大限定350MB,就报出来 未显示页面,因为请求实体过大的错误 Web.config中设置 maxAl ...
- IIS ASP.NET MVC 上传文件到NAS目录
项目要求,网站用户上传的文件,存储到服务器挂接的NAS磁盘里,死活也写不进去,一直提示 System.IO.IOException: 指定的服务器无法运行请求的操作 阿里的客服也问过了, 一群只知道发 ...
- ASP.NET MVC上传文件的几种方法
1.Form表单提交 <p>Form提交</p> <form action="@Url.Action("SavePictureByForm" ...
- MVC上传文件
ASP.NET MVC上传文件是必段撑握的知识.加强训练才是.以前Insus.NET曾使用第三方MyAjaxForm.js :http://www.cnblogs.com/insus/p/378548 ...
- asp.net mvc上传头像加剪裁功能
原文:asp.net mvc上传头像加剪裁功能 正好项目用到上传+剪裁功能,发上来便于以后使用. 我不能告诉你们其实是从博客园扒的前台代码,哈哈. 前端是jquery+fineuploader+jqu ...
- Spring MVC上传文件
Spring MVC上传文件 1.Web.xml中加入 <servlet> <servlet-name>springmvc</servlet-name> <s ...
随机推荐
- fullcalendar日历控件集合知识
1.基本的语法: 首先,fullcalendar和JQUERY一样,以面向对象的方式来组织代码.当然,这里的面向对象不过指能够把整个fullcalendar理解为一个类,这个类里包含有非常多的属性.方 ...
- 乐在其中设计模式(C#) - 组合模式(Composite Pattern)
原文:乐在其中设计模式(C#) - 组合模式(Composite Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 组合模式(Composite Pattern) 作者:weba ...
- MATLAB描绘极坐标图像——polar
polar可用于描绘极坐标图像. 最简单而经常使用的命令格式:POLAR(THETA, RHO) 当中,THETA是用弧度制表示的角度,RHO是相应的半径. 例: a=-2*pi:.001:2*pi ...
- 探索WebKit核心(一)------ 新秀开始
为什么WebKit 现在,研究人员WebKit越来越多的人,我不能逃脱,其中还增加.WebKit也多亏了流行的浏览器和WebOS乱斗.随着Palm WebOS, Chrome OS, Firefox ...
- Alamofire网络库进阶教程
本章节由CocoaChina翻译组成员星夜暮晨(博客)翻译自raywenderlich:Intermediate Alamofire Tutorial,敬请勘误. 欢迎回到我们的 Alamofire ...
- C++指针和引用简介
摘要 本文介绍C++指针和概念引用 这是一个指针 指针的类型 指针所指向的类型 指针表达式 指针与函数 什么是引用 指针引用差别 指针和引用的同样点和不同点 **什么是指针** 指针就是一个存放地址的 ...
- C#软件开发实例.个人定制自己的屏幕抓图工具(八)加入了截图功能键盘
章文件夹 (一)功能概览 (二)创建项目.注冊热键.显示截图主窗体 (三)托盘图标及菜单的实现 (四)基本截图功能实现 (五)针对拖拽时闪烁卡顿现象的优化 (六)加入配置管理功能 (七)加入放大镜的功 ...
- Android属于查询执行情况的电话号码
这部分是昨天学习,但是因为眼所以现在到眼睛超负荷,以后要合理规划时间. 现在里面的手机号码归属地查询主要通过两种途径:1.网络查询.2.匹配本地归属地数据库. 我认为最好的两个方法的结合,在进行联网查 ...
- [Unity3D]Unity3D游戏开发3D选择场景中的对象,并显示轮廓效果强化版
大家好,我是秦培,欢迎关注我的博客,我的博客地址blog.csdn.net/qinyuanpei. 在上一篇文章中,我们通过自己定义着色器实现了一个简单的在3D游戏中选取.显示物体轮廓的实例. 在文章 ...
- springmvc 接收对象 滴灌摘要
js 对象 该阵列看起来像 我明白http://blog.csdn.net/baicp3/article/details/12752255本文 我们指示样品棒 data3一个js对象.遗嘱java当代 ...