IT轮子系列(四)——使用Jquery+formdata对象 上传 文件
前言
在MVC 中文件的上传,一般都采用控件:
<h2>IT轮子四——文件上传</h2>
<div>
<input type="file" />
</div>
第一种方式:使用form表单上传
前台代码:
<div>
<form action="/FileUpload/UploadFile" method="post" enctype="multipart/form-data">
<input type="file" name="file" /><br /><br />
<input type="submit" value="提交" />
</form>
</div>
在前台界面,我们需要注意,当采用form提交数据的时候,我们页面中的控件必须要有name属性。否则,后台接收不到数据。
后台代码:
[HttpPost]
public ActionResult UploadFile() {
try
{
var files = Request.Files;
foreach (string item in files)
{
//可上传多个文件
var file = files[item];
var fileName = file.FileName;
var filePath = Server.MapPath(string.Format("~/{0}", "File"));
//判断路径是否存在
if (!Directory.Exists(filePath))
{
//创建路径
Directory.CreateDirectory(filePath);
}
//保存文件
file.SaveAs(Path.Combine(filePath, fileName));
}
}
catch (Exception ex)
{
throw;
}
return View("Index");
}
好拉,这样就文件就保存到指定的目录拉。
第二种方式:使用Jquery+formdata对象
formdata对象上传文件,其实也上form表单的另一种方式。只是通过juqery进行提交而不是form默认的action。
<h2 style="color:burlywood">第二种方式:使用Jquery+formdata对象</h2>
<div>
<input type="file" name="file" /><br />
<input type="button" value="提交" id="btnUpload" />
</div>
<script>
$(document).ready(function () {
//给按钮绑定点击事件
$("#btnUpload").on("click", function () {
//声明formdata对象
var formData = new FormData();
//获取上传文件
var files = $("input[name='file']").get().files[];
formData.append("myFile", files);
//这里也可以添加其他参数
formData.append("Name", "Peter");
//通过ajax上传
$.ajax({
url: '/Home/Upload/',
data: formData,
type: 'post',
contentType: false,//这里必须为false
processData: false,//这里必须为false
success: function (obj) {
if (obj.success == ) {
//根据返回json的对象做出提示
alert("上传成功");
}
}
});
})
})
</script>
前端视图
public ActionResult Upload()
{
//这里的files 和form 都可按第一种上传方式处理、解析上传的文件和数据
var files = Request.Files;
var form = Request.Form;
//do something here //return the josn object
var obj = new
{
success =
};
return Json(obj);
}
后端接收代码
后记
从10月初,确切的说9月29号起,也写了7、8篇技术类文章。有的文章也有几百的阅读量,可评论留言的人却少之又少,点赞、推荐就更没有。如果这些文章确实帮到了你,对你的工作有那么一点点的用,希望路过的兄弟姐妹们可以有赞的点个赞,有推荐的来个推荐,有转载的来个转载,为我这个博客园增添点人气。
谢谢拉
谨以这篇博客鞭策自己。
IT轮子系列(四)——使用Jquery+formdata对象 上传 文件的更多相关文章
- 通过jQuery Ajax使用FormData对象上传文件
FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". 在 Mozilla Developer 网站 使用For ...
- 通过jQuery Ajax使用FormData对象上传文件 (转载)
XMLHttpRequest Level 2 添加了一个新的接口——FormData.与普通的 Ajax 相比,使用 FormData 的最大优点就是我们可以异步上传二进制文件.jQuery 2.0+ ...
- [转] 通过jQuery Ajax使用FormData对象上传文件
FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". 在 Mozilla Developer 网站 使用For ...
- HTML5 jQuery+FormData 异步上传文件,带进度条
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link href ...
- 利用formdata对象上传文件时,需要添加的参数
function doUpload() { var formData = new FormData($( "#uploadForm" )[0]); $.ajax({ url: 'h ...
- FormData 对象上传二进制文件
使用jQuery 利用 FormData 上传文件:http://harttle.com/2016/07/04/jquery-file-upload.html 通过FormData对象可以组装 ...
- python中使用multipart/form-data请求上传文件
最近测试的接口是上传文件的接口,上传单个文件,我主要使用了2种方法~ 接口例如: URL: http://www.baidu.com/*** method:post 参数: { "salar ...
- 使用python或robotframework调multipart/form-data接口上传文件
这几天调一个multipart/form-data类型的接口,遇到点小阻碍.之前同事有使用urllib库写了个类似的方法实现,比较长,想要改的时候发现不太好使.在网上查找发现用requests库做这个 ...
- jQuery 关于IE9上传文件无法进入后台问题的原因及解决办法(ajaxfileupload.js第四弹)
第四弹的诞生完全不在自己最初的计划之中,是有个网友看了先前关于<ajaxfileupload.js系列>的文章后提出的问题,由于自己一直是用chrome浏览器去测试demo,完全忽略IE浏 ...
随机推荐
- Android的ToggleButton和Switch以及AnalogColok和DigitalColok的用法-android学习之旅(二十)
ToggleButton 和Switch简介 ToggleButton 和Switch都是继承了Button,所以他们的属性设置和Button差不多. 分别支持的属性 ToggleButton 的属性 ...
- SSH深度历险(五) 深入浅出-----IOC AND AOP
IOC就是Inversion of Control,控制反转.在Java开发中,IoC意味着将你设计好的类交给系统(容器)来控制实现,而不是在你的类内部控制.这称为控制反转. 本人理解:就是把原本你自 ...
- Swift基础之显示波纹样式
最近项目用到了蓝牙连接,搜索设备的内容,其中需要搜索过程中出现波纹的动画效果,在这里将项目中OC语言编写的这种动画效果,转换成Swift编写,下面简单介绍说明一下代码. 这里用到了两种方法实现波纹效果 ...
- Hessian源码分析--HessianSkeleton
HessianSkeleton是Hessian的服务端的核心,简单总结来说:HessianSkeleton根据客户端请求的链接,获取到需要执行的接口及实现类,对客户端发送过来的二进制数据进行反序列化, ...
- 从Eclipse插件中读取资源
可以通过Eclipse里的OSGi的Bundle类,获取插件目录下的某个文件的输入流: 1. Bundle bundle = Platform.getBundle(Activator.PLUGIN_I ...
- 谈谈Ext JS的组件——布局的使用方法续一
盒子布局 盒子布局主要作用是以水平(Ext.layout.container.HBox)或垂直方式(Ext.layout.container.VBox)来划分容器区域.这也是比较常有的布局方式. 使用 ...
- android binder理解
Android中的Parcel是什么 Parcel,翻译过来是"打包"的意思.打包干什么呢?是为了序列化. 如果要在进程之间传递一个整数,很简单,直接传就是行了:如果要传 ...
- QGIS编译
一.准备工作 1.下载QGIS源码 最新版本的QGIS源码需要从git上下载.最新的发布版是2.0,下载地址见下.https://github.com/qgis/QGIS/tree/release-2 ...
- CentOS安装、使用VNC
VNC (Virtual Network Computer)是虚拟网络计算机的缩写.VNC 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的.VNC 是在基于 UNIX ...
- ARM-linux汇编常用语法
ARM linux常用汇编语法 ============================= 汇编语言每行的语法: lable: instruction ; comment 段操作: .section ...