`
jveqi
  • 浏览: 321728 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JQuery Ajax File Upload

 
阅读更多

1、HTML

 ======================================测试部分==========================================
       						 <img src="${pageContext.request.contextPath}/img/loading.gif" id="loading" style="display: none;">
					        <table class="tableForm">  
					            <thead>  
					                <tr>  
					                    <th>JQuery Ajax File Upload</th>  
					                </tr>  
					            </thead>  
					            <tbody>  
					                <tr>  
					                    <td><input id="fileToUpload"  type="file" size="45"   
					                        name="fileToUpload"  class="input"></td>  
					                </tr>  
					            </tbody>  
					            <tfoot>  
					                <tr>  
					                    <td><button class="button" id="buttonUpload"  
					                            onclick="ajaxFileUpload();">Upload</button></td>  
					                </tr>  
					            </tfoot>  
					        </table>  
					        <div id="result" style="margin-left:200px"></div>  
					    <!-- upload file end -->
					    ================================================================================

 

 

 

2、js

  <script src="${pageContext.request.contextPath}/js/jquery.js"></script>
  <script src="${pageContext.request.contextPath}/js/ajaxfileupload.js"></script>

function ajaxFileUpload() {  
  			$("#loading").ajaxStart(function(){
  	            $(this).show();
  	        })//开始上传文件时显示一个图片
  	        .ajaxComplete(function(){
  	            $(this).hide();
  	        });//文件上传完成将图片隐藏起来
  	        
  		    $.ajaxFileUpload({  
  		        url : "../UploadPhoto",   //submit to UploadFileServlet  
  		        secureuri : false,  
  		        fileElementId : 'fileToUpload',  
  		        dataType : 'json', //or json xml whatever you like~  
  		        success : function(data, status) { 
  		        	alert('success data : ' + data.message);
  		        	$('#test').html(data.message);
  		        	if(typeof(data.error) != 'undefined')
                    {
                        if(data.error != '')
                        {
                            //alert(data.error);
                            $('#test').html(data.message);
                        }else
                        {
                            //alert(data.message);
                            $('#test').html(data.message);
                        }
                    }
  		        },  
  		        error : function(data, status, e) {  
  		        }  
  		    });
  		}  

 

 

3、servlet

package com.pmis.user.action;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 上传文件 处理servlet
 */
public class UploadFileServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static Logger logger = LoggerFactory.getLogger(UploadFileServlet.class);

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");
		// 判断提交过来的表单是否为文件上传菜单
	
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html");
	    // 设置字符编码为UTF-8, 这样支持汉字显示
	    response.setCharacterEncoding("UTF-8");
		boolean isMultipart = ServletFileUpload.isMultipartContent(request);

        PrintWriter writer = response.getWriter();
        JSONArray json = new JSONArray();
		String result = "";
		if (isMultipart) {
			// 构造一个文件上传处理对象
			FileItemFactory factory = new DiskFileItemFactory();
			ServletFileUpload upload = new ServletFileUpload(factory);

			Iterator items;
			try {
				// 解析表单中提交的所有文件内容
				items = upload.parseRequest(request).iterator();
				while (items.hasNext()) {
					FileItem item = (FileItem) items.next();
					if (!item.isFormField()) {
						// 取出上传文件的文件名称
						String name = item.getName();
						// 取得上传文件以后的存储路径
						String fileName = name.substring(name.lastIndexOf('\\') + 1, name.length());
						// 上传文件以后的存储路径
						String saveDir = this.getServletContext().getRealPath("/upload/");
						if (!(new File(saveDir).isDirectory())) {
							new File(saveDir).mkdir();
						}
						String path = saveDir + File.separatorChar + fileName;
						result = File.separatorChar + fileName;
						// 上传文件
						File uploaderFile = new File(path);
						
						long size = item.getSize();
				        if ("".equals(path) || size == 0) {
							result = "{message:'请选择上传文件'}";
				            return;
				        }

				        String t_name = path.substring(path.lastIndexOf("\\") + 1);
				        // 得到文件的扩展名(无扩展名时将得到全名)
				        String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1).toLowerCase();
				        if(!"jpg".endsWith(t_ext) && !"jpeg".endsWith(t_ext)) {
				        	result = "{message:'请选择上传jpg/jpeg格式图片'}";
				            return;
				        }
						item.write(uploaderFile);
			        	result = "{message:'ok',url:'upload/" + fileName + "'}";
						
					}
				}
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				 //writer.write(json.toString());
				 writer.write(result);
                 writer.close();
			}
		}
	}
}

 

分享到:
评论

相关推荐

    jquery ajax file upload

    在Web开发中,jQuery AJAX File Upload 是一个常见且实用的技术,它允许用户在不刷新整个页面的情况下上传文件。这一技术极大地提升了用户体验,因为用户可以一边浏览网页,一边进行文件上传,提高了交互性和效率。...

    jQuery ajax file upload

    总结来说,`jQuery ajax file upload`是通过`ajaxFileUpload`插件实现的一种无刷新的文件上传方式,它提高了用户体验,并且提供了丰富的自定义选项和回调机制,适用于各种Web应用的文件上传需求。要正确使用,需要...

    jQuery Ajax File Upload实例

    ### jQuery Ajax File Upload技术点 1. **项目结构**:一个典型的Web项目应该包含前端页面和服务端代码。在这里,项目结构包含了两个主要的ASPX页面,Default.aspx作为默认页面,而Upload.aspx用于处理文件上传逻辑...

    jquery Ajaxupload应用

    **jQuery AjaxUpload应用详解** AjaxUpload是一款非常实用的JavaScript插件,它允许用户在无需刷新页面的情况下上传文件,极大地提升了用户体验。在这个详细的知识点解析中,我们将深入理解AjaxUpload的工作原理,...

    ajax file upload

    "jQuery Ajax File Upload"是Ajax技术在上传文件场景中的应用,它允许用户在不离开当前页面的情况下完成文件上传操作,既高效又便捷。 **jQuery库的引入** `jquery.js`是jQuery库的核心文件,它是JavaScript的一个...

    jQuery-File-Upload

    在上传过程中,会触发一系列的事件,如fileuploadstart、fileuploadprogress、fileuploadsuccess等,开发者可以绑定这些事件来执行相应的逻辑。 三、集成与配置 要将jQuery-File-Upload引入项目,首先需要在HTML中...

    jQuery-File-Upload的例子

    《jQuery-File-Upload插件深度解析与应用实践》 jQuery-File-Upload是一款功能强大的JavaScript文件上传组件,它提供了一种优雅的方式来处理文件上传,支持多文件选择、进度条显示、图片预览等特性,使得文件上传变...

    jquery 插件ajaxupload 的简单应用

    **jQuery插件AjaxUpload简介** AjaxUpload是一款基于jQuery的插件,它允许用户在无需刷新页面的情况下上传文件。这个插件极大地提升了用户体验,因为它能够实现在后台处理文件上传,同时还可以自定义各种反馈机制,...

    jQuery-File-Upload for asp.net MVC

    《jQuery-File-Upload在ASP.NET MVC中的应用详解》 在Web开发中,文件上传功能是必不可少的一部分,尤其是在用户需要提交图片、文档等文件时。jQuery-File-Upload是一款广泛使用的前端文件上传插件,它提供了优雅的...

    jquery upload ajax方式

    **jQuery Upload AJAX方式详解** 在Web开发中,文件上传是一个常见的功能,传统的文件上传通常需要刷新整个页面,用户体验较差。随着Ajax技术的发展,无刷新上传文件成为可能,jQuery结合Ajax提供了一种优雅的解决...

    Jquery Large File Upload (Jquery实现大文件上传).rar

    `jQuery Large File Upload` 提供了一种解决方案,它允许用户通过jQuery库实现高效且用户友好的大文件上传功能。这个项目尤其适用于那些希望在PHP环境中集成文件上传功能的开发者,比如用于下载、文章、CMS(内容...

    jQuery-File-Upload插件

    jQuery File Upload是一款强大的基于jQuery的文件上传插件,它提供了多文件选择、进度条显示、预览、上传取消以及删除等功能。这款插件利用HTML5技术,为现代浏览器提供了先进的文件上传体验,同时通过优雅降级的...

    jquery file ajax upload插件的实例

    jquery官方插件ajax file upload使用的实例,用asp.net做的服务器端。具体说明请看这里http://www.cnblogs.com/luq885/archive/2007/11/15/959749.html

    jQuery-File-Upload-master

    《jQuery File Upload详解》 在Web开发中,文件上传功能是一项常见的需求,而jQuery File Upload则是实现这一功能的一款强大插件。本篇文章将深入探讨jQuery File Upload的核心特性、工作原理以及如何在实际项目中...

    jQuery-File-Upload-Java-master.zip_file jquery ja_jQuery File Up

    《jQuery File Upload:Java 实例详解》 在Web开发中,文件上传功能是不可或缺的一部分,jQuery File Upload 是一个强大且用户友好的文件上传插件,它支持多文件选择、进度条显示、预览功能以及异步上传。这个名为 ...

    jQuery File Upload文件上传插件 v10.32.0.zip

    jQuery File Upload是一款功能强大的文件上传插件,专为前端开发者设计,用于在Web应用程序中实现高效、用户友好的多文件上传功能。这个插件的版本是v10.32.0,它提供了丰富的特性,使得文件上传变得更加简单且可控...

    jQuery File Upload演示与下载

    jQuery File Upload利用HTML5的File API,通过AJAX方式实现文件的分块上传,以应对大文件上传时的性能问题。同时,它使用FormData对象存储文件数据,通过XMLHttpRequest的send方法发送到服务器。在上传过程中,插件...

Global site tag (gtag.js) - Google Analytics