一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子


Posted in Javascript onJune 26, 2014

jQuery插件AjaxFileUpload可以实现ajax文件上传,该插件使用非常简单,首先了解一下正确使用AjaxFileUpload插件的方法,然后再了解一些常见的错误信息和解决方法。

使用说明

需要使用jQuery库文件 和AjaxFileUpload库文件

使用实例

一,包含文件部分

<script type="text/javascript" src="jquery.js"></script> 

<script type="text/javascript" src="ajaxfileupload.js"></script>

二,HTML部分

<img id="loading " src="loading.gif" style="display:none;"> 

<input id="fileToUpload " type="file" size="20" name="fileToUpload " class="input"> 

<button class="button" id="buttonUpload" onclick="return ajaxFileUpload ();">上传</button>

只需要三个元素,一个动态加载小图标、一个文件域和一个按钮
注意:使用AjaxFileUpload插件上传文件可不需要form,如下:

<form name="form" action="" method="POST" enctype="multipart/form-data">
……相关html代码……
</form>
因为AjaxFileUpload插件会自动生成一个form提交表单。

对于file文件域ID和name,ajaxFileUpload插件fileElementId参数需要获取文件域ID,如果处理上传文件操作就需要知道文件域name,以便获取上传文件信息,这两者关系一定要清楚。

三,javascript部分

<script type="text/javascript"> 
function ajaxFileUpload (){ 
loading();//动态加载小图标 
$.ajaxFileUpload ({ 
url :'upload.php', 
secureuri :false, 
fileElementId :'fileToUpload', 
dataType : 'json', 
success : function (data, status){ 
if(typeof(data.error) != 'undefined'){ 
if(data.error != ''){ 
alert(data.error); 
}else{ 
alert(data.msg); 
} 
} 
}, 
error: function (data, status, e){ 
alert(e); 
} 
}) 
return false; 
} 
function loading (){ 
$("#loading ").ajaxStart(function(){ 
$(this).show(); 
}).ajaxComplete(function(){ 
$(this).hide(); 
}); 
} 
</script>

主要参数说明:
1,url表示处理文件上传操作的文件路径,可以测试URL是否能在浏览器中直接访问,如上:upload.php
2,fileElementId表示文件域ID,如上:fileToUpload
3,secureuri是否启用安全提交,默认为false
4,dataType数据数据,一般选json,javascript的原生态
5,success提交成功后处理函数
6,error提交失败处理函数

上面有两个方法,一个动态加载小图标提示函数loading()和ajaxFileUpload文件上传$.ajaxFileUpload()函数,这与我们使用jQuery.ajax()函数差不多,使用很简单,这里我省略了PHP处理上传文件,使用jQuery插件 AjaxFileUpload实现ajax文件就这么简单。

同时我们需要了解相关的错误提示

1,SyntaxError: missing ; before statement错误
如果出现这个错误就需要检查url路径是否可以访问

2,SyntaxError: syntax error错误
如果出现这个错误就需要检查处理提交操作的PHP文件是否存在语法错误

3,SyntaxError: invalid property id错误
如果出现这个错误就需要检查属性ID是否存在

4,SyntaxError: missing } in XML expression错误
如果出现这个错误就需要检查文件域名称是否一致或不存在

5,其它自定义错误
大家可使用变量$error直接打印的方法检查各参数是否正确,比起上面这些无效的错误提示还是方便很多。

使用jQuery插件AjaxFileUpload实现无刷新上传文件非常实用,由于其简单易用,因些这个插件相比其它文件上传插件使用人数最多,非常值得推荐。
 
处理页面:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

public partial class web_ajax_FileUpload : System.Web.UI.Page
{
 protected void Page_Load(object sender, EventArgs e)
 {
  HttpFileCollection files = HttpContext.Current.Request.Files;


  //if (files[0].ContentLength > 5)
  //{
  // Response.Write("{");
  // Response.Write("msg:'" + files[0].FileName + "',");
  // Response.Write("error:'文件上传失败'");
  // Response.Write("}");
  //}
  //else
  //{
  // Response.Write("{");
  // Response.Write("msg:'没有文件被上传',");
  // Response.Write("error:'文件上传失败'");
  // Response.Write("}");
  //}
  files[0].SaveAs("d:/adw.jpg");
  Response.Write("{");
  Response.Write("msg:'a',");
  Response.Write("error:''");
  Response.Write("}");

  //Response.Write("{");
  //Response.Write("msg:'ggg\n',");
  //Response.Write("error:'aa\n'");
  //Response.Write("}");
  Response.End();
 }
}

其它网友的补充:

页面代码:

<html>

    <!-- 引入相关的js文件,相对路径  -->

    <script type="text/javascript" src="js/jquery.js"></script>

      <script type="text/javascript" src="js/ajaxfileupload.js"></script>
    <!-- 执行上传文件操作的函数 -->

      <script type="text/javascript">

          function ajaxFileUpload(){

               $.ajaxFileUpload(

                   {

                url:'update.do?method=uploader',            //需要链接到服务器地址

                secureuri:false,

                fileElementId:'houseMaps',                        //文件选择框的id属性

                dataType: 'xml',                                     //服务器返回的格式,可以是json

                success: function (data, status)            //相当于java中try语句块的用法

                {      

                    $('#result').html('添加成功');

                },

                error: function (data, status, e)            //相当于java中catch语句块的用法

                {

                    $('#result').html('添加失败');

                }

            }

                   

               );

              

          }

      </script>

  </head>  

  <body>

      <form method="post" action="update.do?method=uploader" enctype="multipart/form-data">  

        <input type="file" id="houseMaps" name="houseMaps"/> 

        <input type="button" value="提交" onclick="ajaxFileUpload()"/>

    </form> 

    <div id="result"></div>

    

  </body>

</html>

服务器代码:

public class UpdateAction extends DispatchAction {
    public ActionForward uploader(ActionMapping mapping, ActionForm form,

            HttpServletRequest request, HttpServletResponse response) {

        UpFormForm upFormForm = (UpFormForm) form;

        FormFile ff = upFormForm.getHouseMaps();

        try {

            InputStream is = ff.getInputStream();

            File file = new File("D:/" + ff.getFileName());            //指定文件存储的路径和文件名

            OutputStream os = new FileOutputStream(file);

            

            byte[] b = new byte[1024];

            int len = 0;

            while((len = is.read(b)) != -1){

                os.write(b, 0, len);

            }

            os.close();

            is.close();

        } catch (Exception e) {

            e.printStackTrace();

            

        }

        

        return null;

    }

}
Javascript 相关文章推荐
用JavaScript获取网页中的js、css、Flash等文件
Dec 20 Javascript
javascript 语法基础 想学习js的朋友可以看看
Dec 16 Javascript
基于jquery的文本框与autocomplete结合使用(asp.net+json)
May 30 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
Jun 11 Javascript
jQuery多条件筛选如何实现
Nov 04 Javascript
javaScript如何跳出多重循环break、continue
Sep 01 Javascript
前端跨域的几种解决方式总结(推荐)
Aug 16 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
Aug 25 Javascript
将jquery.qqFace.js表情转换成微信的字符码
Dec 01 jQuery
JavaScript引用类型RegExp基本用法详解
Aug 09 Javascript
vue无限轮播插件代码实例
May 10 Javascript
原生js实现下拉框选择组件
Jan 20 Javascript
php读取sqlite数据库入门实例代码
Jun 25 #Javascript
javascript基于HTML5 canvas制作画箭头组件
Jun 25 #Javascript
node.js学习总结之调式代码的方法
Jun 25 #Javascript
javascript获取元素偏移量的方法有哪些
Jun 24 #Javascript
Jquery之Bind方法参数传递与接收的三种方法
Jun 24 #Javascript
JQuery 在线引用及测试引用是否成功
Jun 24 #Javascript
extjs 时间范围选择自动判断的实现代码
Jun 24 #Javascript
You might like
多文件上传的例子
2006/10/09 PHP
php 获取客户端的真实ip
2009/11/30 PHP
解析PHP工厂模式的好处
2013/06/18 PHP
php foreach正序倒序输出示例代码
2014/07/01 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
php+js实现裁剪任意形状图片
2018/10/31 PHP
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
Python 模块EasyGui详细介绍
2017/02/19 Python
python 反编译exe文件为py文件的实例代码
2019/06/27 Python
django中cookiecutter的使用教程
2020/12/03 Python
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
荷兰包包购物网站:The Little Green Bag
2018/03/17 全球购物
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
班组长安全生产职责
2013/12/16 职场文书
2014政务公开实施方案
2014/02/19 职场文书
教师应聘自荐信范文
2014/03/14 职场文书
运动会方阵口号
2014/06/07 职场文书
实习护士自荐信
2014/06/21 职场文书
2014年计生标语
2014/06/23 职场文书
新闻编辑专业自荐信
2014/07/02 职场文书
2015年综治宣传月活动总结
2015/03/25 职场文书
红色革命电影观后感
2015/06/18 职场文书
2015年店长个人工作总结
2015/10/23 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
Go 语言中 20 个占位符的整理
2021/10/16 Golang
Python PIL按比例裁剪图片
2022/05/11 Python