jQuery插件-ajaxFileUpload异步上传文件

  ajaxFileUpload是前两天学习过程中接触到的一个JQ插件,功能很简单,就是实现异步上传文件的功能。

1.语法介绍

$.ajaxFileUpload([setting]);

参数说明:

(1)url——执行上传处理的地址;

(2)secureuri——是否启用安全提交,默认为false;

(3)fileElementId——需要上传<input type=”file”>控件id属性值;

(4)data——自定义参数,即需要额外传递的JSON格式数据;

(5)type——请求方式,提交自定义参数时,这个参数要设置成post;

(6)dataType——服务器返回的数据类型,默认为HTML,可以为XML,JSON,HTML,SCRIPT。

(7)success——执行成功后的回调函数,参数data就是服务器返回的数据;

(8)error——执行失败后的回调函数。

2.使用方法

  下面通过一个将图片上传后台并将上传成功后的图片显示在页面上的Demo来说明这个插件的具体使用方法。

先看前端代码:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script src="Scripts/jquery-1.8.0.js"></script>
    <script src="Scripts/ajaxfileupload.js"></script>
    <script type="text/javascript">
        $(function () {
            $.ajaxFileUpload()
            $("#btnUpload").click(function () {
                $.ajaxFileUpload({
                    url: "FileSaveHandler.ashx",    //上传地址
                    secureuri: false,               //是否加密
                    fileElementId: "imgTitle",      //file控件id属性值
                    data: {},                       //需要额外传递的数据
                    type: "post",                   //请求方式
                    success: function (data) {      //执行成功回调函数
                        $("#imgShow").attr("src", $(data).text());
                    },
					error: function (data, status, e)//响应失败处理函数
                    {
                        alert(e);
                    }
                });
            });
        })
    </script>
</head>
<body>
    <input type="file" name="imgTitle" id="imgTitle" />
    <input type="button" name="btnUploadd" id="btnUpload" value="上传" />
    <hr />
    <img src="" id="imgShow" />
</body>
</html>

后台代码:

public class FileSaveHandler : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        //接收前端传来的文件
        HttpPostedFile file = context.Request.Files["imgTitle"];
        //设置文件的保存路径
        string path = "/Images/"+file.FileName;
        //将保存路径映射成磁盘路径
        string fullPath = context.Request.MapPath(path);
        //将文件保存至服务器磁盘上
        file.SaveAs(fullPath);
        //在前端显示上传的图片文件
        context.Response.Write(path);
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

  代码很简单有注释,不再详细说明。不过使用ajaxFileUpload插件时有两点需要注意:第一点,不要忘记引入jQuery与ajaxFileUpload插件,注意顺序。第二点,服务器返回的数据类型即dataType参数一定要大写,不设置该属性就代表返回HTML格式的数据。

3.实现原理

  默认情况下,上传文件必须通过form表单提交,并且表单需要将属性enctype设置成"multipart/form-data"。ajaxFileUpload插件内部则是动态创建一个iframe,并且内嵌一个可以上传文件form表单,通过这种机制完成异步上传任务。有兴趣深究的哥们请参见下面这篇文章。

jquery插件--ajaxfileupload.js上传文件原理分析

时间: 2024-12-24 14:09:06

jQuery插件-ajaxFileUpload异步上传文件的相关文章

【转】JQuery插件ajaxFileUpload 异步上传文件(PHP版)

前几天想在手机端做个异步上传图片的功能,平时用的比较多的JQuery图片上传插件是Uploadify这个插件,效果很不错,但是由于手机不支持flash,所以不得不再找一个文件上传插件来用了.后来发现ajaxFileUpload这个插件挺不错,所以就用这个插件来做异步上传文件的效果.网上也有很多对ajaxFileUpload插件的使用的文章,不过我发现没有PHP版,所以这次服务器那边的处理就使用PHP语言来处理. 一.先对ajaxFileUpload插件的语法参数进行讲解 原理:ajaxfileu

JQuery插件ajaxFileUpload 异步上传文件(PHP版)

太久没写博客了,真的是太忙了.善于总结,进步才会更快啊.不多说,直接进入主题. 前几天想在手机端做个异步上传图片的功能,平时用的比较多的JQuery图片上传插件是Uploadify这个插件,效果很不错,但是由于手机不支持flash,所以不得不再找一个文件上传插件来用了.后来发现ajaxFileUpload这个插件挺不错,所以就用这个插件来做异步上传文件的效果.网上也有很多对ajaxFileUpload插件的使用的文章,不过我发现没有PHP版,所以这次服务器那边的处理就使用PHP语言来处理. 一.

JQuery插件ajaxFileUpload 异步上传文件

一.先对ajaxFileUpload插件的语法参数进行讲解 原理:ajaxfileupload是通过监听iframe的onload方法来实现, 当从服务端处理完成后,就触发iframe的onload事件调用其绑定的方法,在绑定的方法中获取iframe中服务器返回的数据体(支持的普通文本,json,xml,script, html) 语法:$.ajaxFileUpload([options]) 参数说明: 1,url  上传处理程序地址,也就是我发送给服务器端所要处理上传的地址. 2,fileEl

jquery插件--ajaxfileupload.js上传文件原理分析

英文注解应该是原作者写的吧~说实话,有些if判断里的东西我也没太弄明白,但是大致思路还是OK的. jQuery.extend({ createUploadIframe: function (id, uri) {//id为当前系统时间字符串,uri是外部传入的json对象的一个参数 //create frame var frameId = 'jUploadFrame' + id; //给iframe添加一个独一无二的id var iframeHtml = '<iframe id="' + f

调用jquery的ajaxFileUpload异步上传文件,IE浏览器不进入success问题

找到ajaxFileUpload文件 IE在执行这段正则后,date数据匹配异常,直接改成JSON.parse(data)

jquery之ajaxfileupload异步上传插件

来自:http://www.blogjava.net/sxyx2008/archive/2010/11/02/336826.html 由于项目需求,在处理文件上传时需要使用到文件的异步上传.这里使用Jquery Ajax File Uploader这个组件下载地址:http://www.phpletter.com/download_project_version.php?version_id=6服务器端采用struts2来处理文件上传.所需环境:jquery.jsajaxfileupload.j

struts2 jquery ajaxFileUpload 异步上传文件

一.ajaxFileUpload 实现异步上传文件利用到了ajaxFileUpload.js这个文件,这是别人开发的一个jquery的插件,可以实现文件的上传并能够和struts2框架和好的融合在一起.但是网上的提供的一些ajaxFileUpload.js插件存在一些问题,不能够实现多次点击上传文件,要想再次上传必须重新刷新页面.在网上找了好久才找到真正的解决方案,有些网友给出的解决方案并没有真正的解决问题,不知到什么原因.我的修改: 原文件: var oldElement = $('#' +

ajaxfileupload异步上传文件

ajaxfileupload插件可以以异步方式上传文件(其实现:iframe),不像传统那样需要刷新,下面就介绍下其使用 1.HTML部分(先引入jquery): 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>无刷新单文件上传</title> 6 <script src="jquery-2.2.4.min.

Jquery~跨域异步上传文件

先说明白 这个跨域异步上传功能我们借助了Jquery.form插件,它在异步表单方面很有成效,而跨域我们会在HTTP响应头上添加access-control-allow-method,当然这个头标记只有IE10,火狐和谷歌上支持,对于IE10以下的浏览器来说,我们就不能用这种方式了,我们需要换个思路去干这事,让服务端去重写向我们的客户端,由客户端(与文件上传页面在同域下)来返回相关数据即可. 再做事 1 Jquery.form的使用 <form method="post" act