`

Java:Servlet使用AJAX异步上传文件

    博客分类:
  • java
阅读更多
没有中文乱码问题。
1. 客户端使用HTML + JavaScript(AJAX)
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>Upload Demo</title>

    <style type="text/css"></style>

    <script src="js/jquery.js"></script>
    <script src="js/ajaxupload.js"></script>
    <script type="text/javascript">
    $(function() {
        // 创建AJAX方式上传文件
        var $uploadBtn = $("#uploadBtn");
        new AjaxUpload($uploadBtn, {
            action: 'upload.action',
            name: 'uploadfile',
            onSubmit: function(file, ext){
                $("#info").html("start upload file");
            },
            onComplete: function(file, response){
                $("#info").html(response);
            }
        });
    });
    </script>
</head>

<body>
    <div id="info">Choose file to upload</div>
    <input type="button" width="200px" id="uploadBtn" value="Upload Demo">
</body>
</html>


2. 服务器端使用Servlet:Apache commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar

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

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

@SuppressWarnings("serial")
public class Uploader extends HttpServlet {
    private ServletContext sc;
    private String uploadDir = "downloads";

    @Override
    public void init(ServletConfig config) {
        sc = config.getServletContext();
    }

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        doPost(request, response);
    }

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        request.setCharacterEncoding("UTF-8"); // 防止中文乱码
        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);

        try {
            List items = upload.parseRequest(request);
            Iterator itr = items.iterator();
            while (itr.hasNext()) {
                FileItem item = (FileItem) itr.next();
                if (item.isFormField()) {
                    System.out.println("表单参数名:" + item.getFieldName() + ",表单参数值:" + item.getString("UTF-8"));
                } else {
                    if (item.getName() != null && !item.getName().equals("")) {
                        System.out.println("上传文件的大小:" + item.getSize());
                        System.out.println("文件的类型:" + item.getContentType());
                        System.out.println("上传文件的名称:" + item.getName());// 返回上传文件在客户端的完整路径名称

                        File file = new File(sc.getRealPath("/") + File.separatorChar + uploadDir + File.separatorChar
                                + item.getName());
                        item.write(file);
                    } else {
                        response.getWriter().println("没有选择文件");
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            response.getWriter().println("上传文件失败");
        }

        response.getWriter().println("Ok");
    }
}
分享到:
评论

相关推荐

    ajax异步文件上传,servlet处理

    本篇文章将深入探讨AJAX异步文件上传以及如何使用Servlet进行处理。 ### 1. AJAX异步文件上传原理 在HTML5之前,由于浏览器安全限制,AJAX无法直接处理文件,但HTML5引入了`FormData`对象,使得AJAX能够处理文件...

    java+servlet+ajax程序

    【Java + Servlet + Ajax 程序详解】...从理解Java的基础概念到精通Servlet的请求处理,再到熟练运用Ajax实现页面异步更新,每一步都将加深你对Web开发的理解。通过实践,你将能够构建出满足用户需求的现代互联网应用。

    基于jsp+servlet+Ajax异步登陆模拟web项目

    【基于jsp+servlet+Ajax异步登陆模拟web项目】是一个典型的Web开发实例,它整合了三种核心技术:JavaServer Pages(JSP)、Servlet以及Asynchronous JavaScript and XML(Ajax)。这个项目的核心目的是实现用户登录...

    Servlet图片批量上传ajax异步上传

    综上所述,"Servlet图片批量上传ajax异步上传"是一个完整的Web应用开发场景,涵盖了从前端的无刷新用户体验,到后端的文件处理,再到数据的JSON交换。这个Demo的实现可以帮助开发者理解如何在实际项目中整合这些技术...

    java做的ajax异步上传 图片或文件的demo

    总的来说,这个"java做的ajax异步上传 图片或文件的demo"涵盖了Java Web开发中的关键概念,包括Ajax通信、文件上传处理、Servlet、以及Eclipse和Tomcat的使用。通过学习和实践这个demo,开发者可以深入了解这些技术...

    java文件异步上传

    Java文件异步上传是一种在Web应用中常见的技术,它允许用户在不阻塞浏览器界面的情况下上传文件。这种技术尤其在处理大文件或者批量上传时,能够显著提升用户体验,因为它们不会冻结页面,允许用户继续与应用程序...

    Java通过jQuery实现ajax异步请求

    综上所述,"Java通过jQuery实现ajax异步请求"的示例工程涵盖了客户端与服务器端的交互流程,包括使用jQuery发起AJAX请求、Java后端处理请求并返回数据,以及数据格式的转换和错误处理。了解并掌握这些知识点,对于...

    java实现多文件异步上传

    本文将深入探讨如何使用Java实现多文件的异步上传功能。 #### 一、前端实现 在前端部分,我们主要依赖于HTML5中的`FormData`对象以及jQuery库来实现文件的异步上传。 ##### HTML结构 ```html &lt;!-- 文件输入框 --...

    ajax异步上传,后台servlet处理源码

    以上就是一个基本的Ajax异步文件上传的实现,前端使用Ajax发送文件,后端使用Servlet接收并处理。为了实际应用,你可能需要考虑更多的细节,比如错误处理、文件大小限制、多文件上传等。此外,你提供的压缩包文件...

    ajax实现java文件下载

    2. **Java文件下载**:在Java Web开发中,服务器端通常使用Servlet或Controller来处理文件下载请求。这些组件会根据客户端请求,读取文件内容,设置合适的HTTP响应头(如Content-Type,Content-Disposition等),并...

    Java-Servlet+JDBC实现ajax源码

    【Java Servlet】 Java Servlet是Java编程语言中的一个标准接口,由Java EE(企业版)定义,用于扩展服务器的功能。Servlet被用来动态处理HTTP请求,它可以接收、处理并响应来自客户端(如浏览器)的请求。在大型...

    JavaWeb ajax异步自动填充信息

    在服务器端,通常使用Java和相关的框架(如Spring、Struts或Servlet)来处理这些请求。在这个例子中,服务器可能需要连接到MySQL数据库,查询与输入文本匹配的建议数据。为了实现这一点,你需要创建一个Java方法,该...

    FileUpload ajax 异步文件上传 进度条

    1. **Ajax异步文件上传**:传统的文件上传通常会刷新整个页面,而Ajax则允许我们在后台异步地发送文件,不打断用户的其他操作。使用Ajax上传文件可以避免页面跳转,提高交互性。在JavaScript中,我们通常使用`...

    ajax版自定义上传文件数量+进度条+JAVA+Servlet

    本文将深入讲解如何使用AJAX、JavaScript、Java和Servlet来实现一个自定义的文件上传功能,包括限制上传文件的数量以及展示进度条。 首先,我们需要在前端页面上创建一个表单,用户可以通过这个表单选择要上传的...

    Java+servlet+jsp页面ajax请求

    - **定义请求方法和URL**:使用open()方法设置请求类型(GET或POST)、URL(指向Servlet的路径)以及是否异步执行。 - **设置请求头**:如果需要发送额外的头部信息(如Content-Type),可以在open()之后,send()...

    JSP+Servlet+AJAX的dao设计模式

    在`TestJSP`这个文件中,可能包含了实现上述步骤的示例代码,如DAO接口和实现类、Service类、Servlet处理类以及使用AJAX的JSP页面。通过分析和学习这些代码,你可以更好地理解JSP、Servlet、AJAX和DAO设计模式如何...

    Mysql + jsp +javabean+ jquery +ajax+servlet等的例子综合

    - 使用jQuery和Ajax实现异步数据交互,如动态加载数据、无刷新提交表单等。 - 编写Servlet来处理请求和响应,作为服务器端的控制器。 - 最后,测试和调试整个系统,确保所有功能正常运行。 通过实践这样的综合例子...

    jsp异步上传文件

    `jsp异步上传文件`这个主题聚焦于如何利用JavaServer Pages (JSP)、Servlet以及JavaScript的ajaxFileupload.js插件来实现在Web应用中异步上传文件。这种方式可以提供更好的用户体验,因为文件上传不会阻塞页面的其他...

    java带进度条的异步上传

    这个“java带进度条的异步上传”示例利用了Servlet、Ajax以及可能的JavaScript库,如jQuery,来提供这样的功能。下面将详细解释实现这一功能的关键知识点。 首先,我们要理解Java Servlet的角色。Servlet是Java EE...

Global site tag (gtag.js) - Google Analytics