文件上传之Ajax篇

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:

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

后台:

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

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

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

时间: 2024-10-23 16:51:00

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

JSch - Java实现的SFTP(文件上传详解篇) 转

JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序. 本文只介绍如何使用JSch实现的SFTP功能. SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式.SFTP是使用加密传输认证信息和传输

ajax 文件上传,ajax

ajax 文件上传,ajax 啥也不说了,直接上代码! <input type="file" id="file" name="myfile" onclick="clearProgressInfo()"/> <span id="progressInfo" style="display:none;"> <progress id="progressBar

Java+jsp文件上传(ajax)的方式

今天在开发项目的时候碰到了一个需求,一个简单的文件上传.但是上传后需要通过回调函数做一些上传完毕的操作.发现通过<form><file><input submit>能做到文件上传,但是回调函数不是很好实现. 于是打算改用ajax的形式去提交.以下是实现的代码: jsp页面:(css样式和标签引入属于自己定制的,与本文无关,直接去了就好): <%@page language="java" contentType="text/html;

【转】JSch - Java实现的SFTP(文件上传详解篇)

JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序. 本文只介绍如何使用JSch实现的SFTP功能. SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式.SFTP是使用加密传输认证信息和传输

JSch - Java实现的SFTP(文件上传详解篇)(转)

JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序. 本文只介绍如何使用JSch实现的SFTP功能. SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式.SFTP是使用加密传输认证信息和传输

JSch - Java实现的SFTP(文件上传详解篇)

http://www.byywee.com/page/M0/S755/755589.html 本文只介绍如何应用JSch实现的SFTP功能. SFTP是Secure File Transfer Protocol的缩写,安然文件传送和谈.可认为传输文件供给一种安然的加密办法.SFTP 为 SSH的一部份,是一种传输文件到办事器的安然体式格式.SFTP是应用加密传输认证信息和传输的数据,所以,应用SFTP是很是安然的.然则,因为这种传输体式格式应用了加密/解密技巧,所以传输效力比通俗的FTP要低得多

springMVC含文件上传调用ajax无法连接后台

springMVC在使用ajax进行后台传值的时候发现找不到对应的requestMapping(""),无法进入后台,在多次试验后确定是 MultipartFile对象与ajax冲突:并且不报任何异常,直接调用ajax的失败属性方法处理:代码如下: ·1 @RequestMapping("/addimage") 2 public String addimage(@RequestParam("image")MultipartFile file,Ht

Asp.Net 无刷新文件上传并显示进度条的实现方法及思路

相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦苦来 实现呢?我并不否认"拿来主义",只是我个人更喜欢凡是求个所以然.本篇将阐述通过Html,IHttpHandler和 IHttpAsyncHandler实现文件上传和上传进度的原理,希望对你有多帮助. 效果图: 本文涉及到的知识点:1.前台用到Html,Ajax,JQuery,JQuery UI 2.后台用到一般处理程序(IHttpHandler)和

文件上传控件,做到可以任意删除追加一张图片(或者视频)

思路:把所有的文件对象缓存到临时数组里,在提交的时候在从数组里面取出来. //选择文件后处理 $("input[type='file']").change(function(event) { var $textObj = $(this).parent().find("input[type='text']"); $textObj.val($(this).val()); }); /******************* 图片上传控制开始 ****************