ASP.NET MVC上传文件的几种方法
1.Form表单提交
<p>Form提交</p>
<form action="@Url.Action("SavePictureByForm")" enctype="multipart/form-data" method="post">
<input id="pic" name="pic" type="file" />
<input type="submit" value="提交" />
</form>
2.Ajax.BeginForm,原理也是Form表单提交
<p>Ajax.BeginForm</p>
@using(Ajax.BeginForm("SavePictureByForm", null, new AjaxOptions() { OnSuccess = "PostSuc", OnFailure = "PostFail", HttpMethod = "Post"}, new {enctype = "multipart/form-data"}))
{
<input type="file" name="pic" id="pic" multiple="multiple" />
<input type="submit" value="提交" />
}
以上两种方式,在后台用同一种方法可以获取数据: 但是这两种方法会造成页面刷新,有时会影响用户操作.
public ActionResult SavePictureByForm()
{
HttpFileCollectionBase files = Request.Files;
var file = files[0];
bool isOk = false;
string msg = string.Empty;
//....OtherDO return Content("<script>window.location.href='/home/index';</script>");
}
3.Ajax提交 用此方法需要用到FileReader类,再获取到文件的Base64数据,将Base64数据Post过去
<p>Ajax:以上传图片为例</p>
<input type="file" id="picAjax"/>
<input type="button" id="submitPic" value="提交" />
<img id="selImg" src="" alt="用作图片预览" />
var picString = "";
$(function () {
$("#picAjax").change(function (e) {
var file = e.delegateTarget.files[0];
//在此可以对选择的文件进行判断:文件类型 文件大小等
//..... var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function (ret) {
picString = reader.result
//预览图片
$("#selImg").attr({ "src": picString });
}
}); $("#submitPic").click(function () {
$.ajax("home/SavePicture", {
type: "post",
datatype: "json",
data: picString,
error: function () { },
success: function (result) {
if (result) {
alert(result.msg);
}
}
});
});
后端接收
[HttpPost]
public ActionResult SavePicture(string picString)
{
bool isOk = false;
string msg = string.Empty;
//其他操作
//.........
//.........
return Json(new { suc = isOk, msg = msg });
}
第三种方法做到了真正异步提交.但是如果选择的文件较大,可能会出现问题(未测试).
对于图片预览 前两种方法也可用base64数据进行图片预览.
ASP.NET MVC上传文件的几种方法的更多相关文章
- asp.net MVC 上传文件 System.Web.HttpException: 超过了最大请求长度
APS.NET MVC 上传文件出现 System.Web.HttpException: 超过了最大请求长度 这个问题 原因是 默认最大上传文件大小为4096,而我提交的文件太大了. 解决方案:修改 ...
- ASP.NET MVC上传文件----uploadify的使用
课程设计需要实现上传文件模块,本来ASP.NET是有内置的控件,但是ASP.NET MVC没有,所以就有两种方法:自定义和采用第三方插件.由于时间的关系,故采用第三方插件:uploadify. upl ...
- 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 客户端上传文件全路径获取方法
asp.net 获取客户端上传文件全路径方法: eg:F:\test\1.doc 基于浏览器安全问题,浏览器将屏蔽获取客户端文件全路径的方法,只能获取到文件的文件名,如果需要获取全路径则需要另想其他 ...
- ASP.NET上传文件的几种方法
//上传文件实例 if (fileDealer.HasFile)//判断文件是否存在 { string filepath = ""; ...
- net上传文件的三种方法
ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法. 方法一:用Web控件FileUpload,上传到网站根目录. Test.aspx关 ...
- GitHub常用上传文件的两种方法 附带常见的问题及Git安装教程
从早上下课到现在一直在琢磨如何给Github下载本地文件,中午饭都没吃.还好是解决了,感觉挺有成就感的.O(∩_∩)O哈哈~ 好哒 闲话不说,说重点. 一.git的安装 百度云:http://pan. ...
- ASP.NET MVC上传文件 未显示页面,因为请求实体过大。解方案
在Dropzone中设置 maxFilesize: 350, //MB 但上传的文件没有到最大限定350MB,就报出来 未显示页面,因为请求实体过大的错误 Web.config中设置 maxAl ...
随机推荐
- web基础--html
WebBasic 1.web应用体系 课程大纲 1.web基础:做网页 2.结构: a.html 勾勒网页结构及内容 b.css ...
- 关于List、Set集合以及Map的使用
package tingjizifu; import java.util.*; public class TongJi { /* * 使用Scanner从控制台读取一个字符串,统计字符串中每个字符出现 ...
- jQuery 小知识点(插件)
1.jQuery插件小知识点: 估计很多人都没弄明白下面的东西,特从网络上搜索了下面的知识,自己以后用起来也比较方便: $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例 ...
- validate插件深入篇
1.使用valid()来验证表单是否填写正确: <form id="mainform"> <button id="check">< ...
- phplib template说明
phplib template phplib有五大功能:将数据库驱动和对数据库操作完全分离:支持session:权限许可:模板:购物 车 说明:1.第一个简单的模板页first.html模板中的{ma ...
- 关于ASP.NET MVC中的视图生成
在 ASP.NET MVC 中,我们将前端的呈现划分为三个独立的部分来实现,Controller 用来控制用户的操作,View 用来控制呈现的内容,Model 用来表示处理的数据. 从控制器到视图 ...
- UCOS 请求任务删除函数 及其应用
有时候,如果任务A拥有内存缓冲区或信号量之类的资源,而任务B想删除该任务,这些资源就可能由于没被释放而丢失.在这种情况下,用户可以想法子让拥有这些资源的任务在使用完资源后,先释放资源,再删除自己.用户 ...
- 高性能Socket组件和RPC,让你像写本地代码一样开发网络应用和分布式程序
最近想试试C#能不能写出高性能的分布式组件,于是写了一个双工RPC,也当练手,下面是单连接的测试结果,非常给力.机器配置:U:E1230-v2,内存:ddr3-8G 1.递归调用 过程:Clie ...
- SQL WHILE 循环中的游标 用例,SQL中实现循环操作
--声明两个应用变量 declare @USERID_ int declare @ORGANISEUNITID_ int --声明一个变量计数用,开发中可以忽略 declare @i int=0 -- ...
- Resharper TAB 傻吊
直接把tools中的模板全选删除掉!