`
bean-woo
  • 浏览: 135464 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

FileUploadServlet 文件上传

阅读更多

package com.appdev.bsf.server.servlet;

import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

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.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.appdev.bsf.common.client.datasource.DictionaryGwtRpcService;
import com.ibm.icu.text.SimpleDateFormat;

public class FileUploadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private DictionaryGwtRpcService service;
    private ServletFileUpload upload;
    private String year;
    private String month;
    private String day;

    @Override
    public void init() throws ServletException {
        FileItemFactory factory = new DiskFileItemFactory();
        upload = new ServletFileUpload(factory);

        ServletContext application;
        WebApplicationContext wac;

        application = getServletContext();
        wac = WebApplicationContextUtils.getWebApplicationContext(application);
        service = (DictionaryGwtRpcService) wac.getBean("dictionaryGwtRpcServiceImpl");

        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String[] dateArr = sdf.format(date).split("-");
        year = dateArr[0];
        month = dateArr[1];
        day = dateArr[2];
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
            IOException {
        response.setContentType("text/html;charset=utf-8");

        Integer id = null;
        String clsUrl = null;
        Map<String, String> data = null;
        try {
            id = Integer.valueOf(request.getParameter("id"));
            clsUrl = request.getParameter("clsUrl");
            data = new HashMap<String, String>();
        } catch (Exception e) {
            e.printStackTrace();
        }

        List<?> items = null;
        upload.setSizeMax(1024 * 1024 * 2);
        try {

            items = upload.parseRequest(request);
        } catch (FileUploadException ex) {
            throw new ServletException(ex);
        }

        Iterator<?> iter = items.iterator();

        while (iter.hasNext()) {
            FileItem item = (FileItem) iter.next();
            if (item.isFormField() == false) {
                operatorFile(item, id, clsUrl, data);
            }
        }
    }

    private void operatorFile(FileItem item, Integer id, String clsUrl, Map<String, String> data) {
        String fileName = null;
        // 获得上传路径
        String path = "/uploads/" + year + "/" + month + "/" + day;
        String savePath = getServletContext().getRealPath(path);

        // 获得文件扩展名
        String ext = item.getName().substring(item.getName().lastIndexOf("."));

        // 取的file域的值的名字,不带路径
        int pos = item.getName().lastIndexOf("\\");
        String fieldValue = item.getName().substring(pos + 1);
        // 或直接保存成文件

        // 判断当天的文件夹是否存在,按年/月/日创建,如果不存在则创建
        if (!new File(savePath).isDirectory()) {
            new File(savePath).mkdirs();
        }
        // 判断是否有扩展名exe
        if ("exe".equals(ext)) {
            return;
        }
        File file = new File(savePath, fieldValue);
        try {
            fileName = item.getFieldName();
            // 写文件
            item.write(file);
            // 存路径
            data.put(fileName, path + "/" + item.getName());

            // 数据库写值
            service.updateFiledUrl(clsUrl, id, data);
        } catch (Exception e) {
            e.printStackTrace();
        }// 直接保存文件
    }
}

分享到:
评论

相关推荐

    FileUploadServlet_javaweb文件上传servlet_

    在本示例中,"FileUploadServlet"是一个专门处理文件上传的Servlet,让我们详细了解一下如何利用Servlet实现文件上传功能。 首先,我们需要了解Servlet生命周期中的关键方法,如`init()`, `service()`, `doGet()` ...

    ajax异步文件上传,servlet处理

    为了提供更好的用户体验,开发者通常会采用AJAX(Asynchronous JavaScript and XML)技术实现异步文件上传,避免传统方式下页面刷新带来的中断感。AJAX允许在后台与服务器进行通信,而无需刷新整个页面。本篇文章将...

    文件上传到服务器 javaweb

    在Java Web开发中,文件上传是一项常见的功能,用于将用户选择的本地文件传输到服务器端。本教程将探讨如何利用Servlet技术实现文件上传至由Tomcat服务器托管的应用中。 首先,我们需要了解Servlet的基本概念。...

    java文件上传和下载功能

    1. `FileUploadServlet.java`: 实现文件上传的Servlet,处理`multipart/form-data`请求,解析上传文件并保存。 2. `FileDownloadServlet.java`: 处理文件下载请求,设置响应头并输出文件内容。 3. `upload.jsp`: ...

    简单的jsp文件上传

    在IT行业中,文件上传是一项常见的功能,特别是在Web应用中,用户可能需要上传图片、文档等文件。本示例关注的是“简单的jsp文件上传”,这对于初学者理解如何在Java Server Pages (JSP) 中实现文件上传至关重要。...

    java实现文件上传jar包

    在Java编程中,文件上传是一项常见的任务,尤其是在构建Web应用程序时。这个场景中提到的"java实现文件上传jar包"是指使用Java库来处理文件上传功能。主要涉及到两个关键的开源库:Apache Commons IO和Apache ...

    java文件上传smartUpload

    Java文件上传是Web开发中常见的功能之一,SmartUpload是一个强大的Java文件上传组件,它使得在Java应用程序中处理文件上传变得简单。在这个场景中,我们主要关注如何使用SmartUpload进行文件上传,并通过一个Demo来...

    apache文件上传_apache文件上传_

    Apache文件上传是Java Web开发中常见的一项功能,用于在服务器端接收并处理用户通过Web界面上传的文件。在Java Web应用程序中,Apache提供了一个强大的工具库——Commons FileUpload,来帮助开发者实现这一功能。本...

    jsp,servlet普通表单+文件上传

    本示例中的“jsp,servlet普通表单+文件上传”着重讲解如何结合这两种技术实现一个包含普通输入字段和文件上传功能的表单。 首先,`jsp`是一种服务器端脚本语言,它允许在HTML页面中嵌入Java代码,从而实现动态网页...

    Java文件上传下载

    在Java编程领域,文件上传和下载是Web应用中常见的功能,尤其在开发涉及用户交互的系统时,如社交网络、在线文档编辑平台等。本文将深入探讨如何在Java环境中实现文件上传与下载,并通过注释丰富的代码示例帮助理解...

    Java 文件上传的实例详解

    "Java 文件上传的实例详解" Java 文件上传是指在 Java 应用程序中实现文件上传功能的过程。文件上传是 Web 应用程序中非常常见的功能,例如上传头像、上传附件、上传图片等。Java 文件上传可以使用多种方法实现,...

    通过Servlet文件上传理解Struts2文件上传原理(附源码)

    在本文中,我们将深入探讨如何使用Servlet来理解Struts2中的文件上传原理。Servlet是Java Web应用程序中的一个组件,用于处理HTTP请求和响应。而Struts2是一个基于MVC(模型-视图-控制器)设计模式的开源Web应用框架...

    基于java web的文件上传代码

    在Java Web开发中,文件上传是一项常见的功能,用于允许用户将本地文件传输到服务器。本教程将深入探讨如何实现基于Java Web的文件上传代码。首先,我们需要了解几个关键概念和技术。 1. **HTTP协议**:Java Web...

    java中文件上传实例

    在Java编程中,文件上传是一项常见的任务,尤其在开发Web应用程序时,如用户需要上传个人头像、上传文档等。本教程将详细讲解如何在Java中实现文件上传功能,包括处理图片和文本文件。 首先,我们需要理解文件上传...

    文件上传(验证大小类型)

    在IT行业中,文件上传是一项常见的功能,特别是在Web应用和服务器端开发中。Java作为一种广泛使用的后端编程语言,提供了丰富的库和API来处理文件上传的需求。在这个场景中,我们需要关注两个核心方面:验证文件大小...

    Http Servlet文件上传下载

    Servlet是Java提供的一种用于扩展服务器功能的接口,尤其在网络应用中,如文件上传和下载。本实例将深入讲解如何利用Http Servlet实现文件的上传与下载功能。 一、文件上传 1. **MultipartRequest**: 在Servlet中...

    uploadify大文件上传

    在IT行业中,文件上传是常见的功能之一,尤其在大数据量的场景下,大文件上传的实现显得尤为重要。Uploadify是一款JavaScript插件,它允许用户在Web应用中方便地实现大文件的分块上传,减轻了浏览器内存压力,提高了...

    servlet实现文件上传功能

    在本篇讨论中,我们将深入探讨如何利用Servlet实现文件上传功能,以及在这个过程中涉及的关键知识点。 首先,我们需要了解HTTP协议。HTTP协议是无状态的,这意味着每次请求都是独立的。因此,在客户端(通常是...

    java web文件上传和下载的程序

    在Java Web开发中,文件上传和下载是常见的功能,尤其对于构建交互性强的Web应用程序来说至关重要。本教程将深入探讨如何使用Java实现Web文件上传和下载的程序,这对于初学者理解Web开发的基本流程非常有帮助。 一...

    简单的文件上传 (servlet)

    在Java Web开发中,文件上传是一项常见的功能,用于让用户上传图片、文档等文件到服务器。在本教程中,我们将探讨如何使用Servlet实现简单的文件上传。Servlet是Java EE的一部分,它提供了一种动态处理HTTP请求的...

Global site tag (gtag.js) - Google Analytics