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. 2015.1.31 DataGridView自动滚动到某行

    方法一.dv.CurrentCell = dv.Rows[i].Cells[2] 但此cell不能是隐藏cell 方法二. if (dgr.Index < dv_sel_aw.FirstDisp ...

  2. Drools学习笔记1—规则文件

    Facts(即普通的POJO) 指普通业务对象插入到Workingmemory后的对象规则可以对fact对象进行任意的对象操作是规则与应用系统交换的桥梁返回FactHandler对象,是插入到Work ...

  3. ping 127.0.0.1请求超时的解决办法?

    转自:http://blog.51cto.com/dengyong/1429699 打开网络连接,你很有可能启用了虚拟wifi.若有无线网卡就把无线网卡关掉,然后本地连接那里(就是有线网卡的那个连接) ...

  4. DAY20-Django之FileField与ImageField

    ImageField 和 FileField 可以分别对图片和文件进行上传到指定的文件夹中. 1. 在下面的 models.py 中 : picture = models.ImageField(upl ...

  5. java之线程飞机大战制作

    import java.awt.Graphics; import java.util.ArrayList; import javax.swing.JFrame; import javax.swing. ...

  6. memset,memcpy,strcpy的使用与区别

    1.memset 原型:   extern void *memset(void *buffer, int c, int count); 功能:   把buffer所指内存区域的前count个字节设置成 ...

  7. Select2下拉选项库 部分积累

    用了这么久的Select2插件,也该写篇文章总结总结. 在我的印象里Select2有2个版本,最新版本有一些新的特性,并且更新了一下方法参数,比最初版本要好看一些,本文针对新版本. 官网:http:/ ...

  8. ???Spring集成MyBatis02 【不推荐使用,了解即可】

    2017年5月19日09:31:22 由于该种方法比较麻烦,所以三少暂时不更新,哈哈哈:待更新...

  9. SimpleDateFormat-多线程问题

    SimpleDateFormat-多线程问题: SimpleDateFormat类在多线程环境下中处理日期,极易出现日期转换错误的情况 import java.text.ParseException; ...

  10. easyui layout 折叠之后显示标题

    方法一:重载扩展panel收缩事件 (function($){ var buttonDir = {north:'down',south:'up',east:'left',west:'right'}; ...