AJAX上传文件

1.为什么要写这篇文章

  楼主前几天去北京面试,聊起ajax上传文件, 面试官告之不能,遂讨论之,不得果,于是写下这篇文章,希望能和大家一起学习

2.正文

 首先,要使用ajax上传文件就要使用到HTML5 新增的FormData对象,这个对象其实就相当于一个表单容器,它有一个方法append("key",value),可以以键值对的方式动态的像"表单"中添加内容

 第二,要对$.ajax()中的参数进行设置,具体设置方法见代码

 话不多说,上代码

HTML:

<input type="file" name="f1" id="f1" />
<input type="button" onclick="upload()" value="upload" multiple/>
<input type="text" value="hehe" id="t1" name="t1"/>

JavaScript:

  function upload() {
var formData = new FormData(); //新建FormData对象
var fileList = $("#f1").files;   //取file控件中的文件,files属性取到的是一个fileList
formData.append('aaa', fileList[0]); //将fileList中的文件逐个放入formData中,注意,直接放入fileList后台是取不到的
formData.append('aaa', fileList[1]); //formData.append()中的"key",如果传入的是文件,就可以随意取名字了
formData.append('bbb', $("#t1").val()); //作为示例,同时放入表单数据
$.ajax({
url: "@Url.Action("receive","home")", //C# Razor写法,也可写成/home/receive,但是安全性欠佳
data: formData,
type: 'POST',
contentType: false, //这里着重强调contentType和processData都要设置为false,否则文件发送不过去
processData: false, //这样做是为了防止浏览器自动转换发送出的数据格式为字符串或其他
success: function (data) { //这一部分楼主随意写了
if (data === "") {
return false;
}
},
error: function (a, b, c) {
alert("aaa");
}
});
}

后台:

        [HttpPost]
public ActionResult receive()
{
HttpPostedFileBase file = Request.Files[];
var file1 = Request.Form[];
var bbb = Request.Params["bbb"];
return null;
}

  注:file与file1都是取到的文件,bbb则是取到的value,即"hehe"

  楼主第一次写博客,如有错误,请多指教,定当虚心学习

  如有转载,请注明出处http://www.cnblogs.com/ones/p/4348710.html

文件上传之Ajax篇的更多相关文章

  1. ajax 文件上传,ajax

    ajax 文件上传,ajax 啥也不说了,直接上代码! <input type="file" id="file" name="myfile&qu ...

  2. maven工程 java 实现文件上传 SSM ajax异步请求上传

    java ssm框架实现文件上传 实现:单文件上传.多文件上传(单选和多选),并且用 ajax 异步刷新,在当前界面显示上传的文件 首先springmvc的配置文件要配置上传文件解析器: <!- ...

  3. django设置并获取cookie/session,文件上传,ajax接收文件,post/get请求及跨域请求等的方法

    django设置并获取cookie/session,文件上传,ajax接收文件等的方法: views.py文件: from django.shortcuts import render,HttpRes ...

  4. 利用struts2进行单个文件,批量文件上传,ajax异步上传以及下载

    利用struts2进行单个文件,批量文件上传,ajax异步上传以及下载 1.页面显示代码 <%@ page language="java" import="java ...

  5. 关于文件上传的ajax交互

    首先我们来了解一下上传文件 <input type="file"> input的file常用上传类型 后缀名 MIME名称 *.3gpp audio/3gpp, vid ...

  6. HttpApplication实战大文件上传 (第四篇)

    一.Asp.net中的文件上传 在Asp.net 1.1中,文件在上传过程中将被全部保存在内存中,对于大文件来说,会造成内存空间的过度使用,可能会招致恶意攻击.为了解决这个问题,Asp.net在配置文 ...

  7. Python Django缓存,信号,序列化,文件上传,Ajax登录和csrf_token验证

    本节内容 models操作 Django的缓存 请求方式 序列化 Form 配合Ajax实现登录认证 上传文件 Ajax  csrf_token验证方式 1 models操作 单表查询: curd(增 ...

  8. SpringMVC(四)-- springmvc的系统学习之文件上传、ajax&json处理

    资源:尚学堂 邹波 springmvc框架视频 一.文件上传 1.步骤: (1)导入jar包 commons-fileupload,commons-io (2)在springmvc的配置文件中配置解析 ...

  9. 表单文件上传,ajax文件上传

    原创链接:http://www.cnblogs.com/yanqin/p/5345562.html html代码  index.jsp(表单文件上传) <form action="sh ...

随机推荐

  1. rails权限管理—devise+cancan+rolify

    使用devise.cancan和rolify组件建立用户权限模型的说明. devise:负责用户注册.登录.退出.找回密码等操作.细节参考devise on github cancan:负责角色建立. ...

  2. php大型网站如何提高性能和并发访问

    一.大型网站性能提高策略: 大型网站,比如门户网站,在面对大量用户访问.高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器.高性能的数据库.高效率的编程语言.还有高性能的Web容器. ...

  3. C Primer Plus学习笔记(七)- 字符输入/输出和输入验证

    单字符 I/O:getchar() 和 putchar() getchar() 和 putchar() 每次只处理一个字符 getchar() 和 putchar() 都不是真正的函数,它们被定义为供 ...

  4. 重新认识synchronized(上)

    synchronized在JDK5之前一直被称为重量级锁,是一个较为鸡肋的设计,而在JDK6对synchronized内在机制进行了大量显著的优化,加入了CAS,轻量级锁和偏向锁的功能,性能上已经跟R ...

  5. NodeJS之Url的使用

    一.通过http模块中的request事件可以得到在服务端拿到客户端的有关url的数据(req.url),其中req.url得到的数据是端口号后的所有路径,之后通过调入url模块对获取到的req.ur ...

  6. python 继承进阶

    继承进阶 面向对象 1.类:具有相同属性和方法 的一类事物 类名可以实例化一个对象 类名可以调用类属性,(静态属性 和(方法)动态属性) 2.对象:也就是实例    对象名:调用对象属性 调用方法 3 ...

  7. tomcat 三种部署方式以及server.xml文件的几个属性详解

    一.直接将web项目文件件拷贝到webapps目录中 这是最常用的方式,Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用.如果你想要修改这个默认 ...

  8. The R Project for Statistical Computing

    [Home] Download CRAN R Project About R Contributors What’s New? Mailing Lists Bug Tracking Conferenc ...

  9. css的relative与absolute(一)

    relative与absolute是position的两个值,本文对这两个值得关系进行了一个小实验 实验一: 首先定义了两个div元素,代码如下所示: <!doctype html> &l ...

  10. Hadoop运行程序不报错只有warn也没反应也不输出结果的解决办法

    log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFact ...