一个简单的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 相关文章推荐
JS焦点图切换,上下翻转
May 12 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
Mar 14 Javascript
解析javascript 数组以及json元素的添加删除
Jun 26 Javascript
Javascript 按位取反运算符 (~)
Feb 04 Javascript
JS来动态的修改url实现对url的增删查改
Sep 05 Javascript
JS简单操作select和dropdownlist实例
Nov 26 Javascript
jQuery操作属性和样式详解
Apr 13 Javascript
JS实现淡入淡出图片效果的方法分析
Dec 20 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
Dec 27 Javascript
vue.js 初体验之Chrome 插件开发实录
May 13 Javascript
vue中是怎样监听数组变化的
Oct 24 Javascript
js闭包和垃圾回收机制示例详解
Mar 01 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
在Debian系统下配置LNMP的教程
2015/07/09 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
js 文本滚动效果的实例代码
2013/08/17 Javascript
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
jquery代码实现简单的随机图片瀑布流效果
2015/04/20 Javascript
javascript生成不重复的随机数
2015/07/17 Javascript
Javascript闭包实例详解
2015/11/29 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
Python标准库之sqlite3使用实例
2014/11/25 Python
Python常用的日期时间处理方法示例
2015/02/08 Python
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
Django 实现下载文件功能的示例
2018/03/06 Python
python检索特定内容的文本文件实例
2018/06/05 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
对Python生成器、装饰器、递归的使用详解
2019/07/19 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
Python彻底删除文件夹及其子文件方式
2019/12/23 Python
用CSS禁用输入法(CSS3 UI规范)实例解析
2012/12/04 HTML / CSS
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
资产评估专业大学生求职信
2013/09/29 职场文书
护理学中专毕业生求职信
2013/11/11 职场文书
2014年教师培训的自我评价
2014/01/03 职场文书
幸福家庭事迹材料
2014/02/03 职场文书
党校学习自我鉴定
2014/02/24 职场文书
质量管理标语
2014/06/12 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书
SQL Server使用T-SQL语句批处理
2022/05/20 SQL Server