`
peng_jian_ming
  • 浏览: 259066 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Java上传文件同时含有表单域的实现

    博客分类:
  • Java
阅读更多
package com.yc.eap.util;

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

import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.log4j.Logger;

public class UpLoad {

public static final Logger logger = Logger.getLogger(UpLoad.class);
private HttpServletRequest request = null;
private UpLoad instance = new UpLoad(request);
private Map<String,Object> map = new HashMap<String,Object>();

public UpLoad(HttpServletRequest request){
this.request = request;
}

public Map upLoad(){
    String name = null;
    DiskFileUpload fu = new DiskFileUpload();
    /**用于设定请求消息中实体内容的最大允许大小,这里设置最大上传文件的大小为200M*/
    fu.setSizeMax(200*1024*1024);
    /**设置用临时文件来存放临时解析出的数据值,临时数据值的临界值为1M*/
    fu.setSizeThreshold(1024*1024);
    /**用于存放临时文件的存放目录,必需为绝对路径,如果不设定将存放在Tomcat目录下的temp文件下*/
    //fu.setRepositoryPath("");
    /**parseRequest(request)方法是DiskFileUpload的重要方法是Http请求的入口,如果请求消息中的实体不是
     * "multipart/form-data",该方法将抛出异常*/
    FileUploadBase.isMultipartContent(request);
    List filelist = null;
try {
filelist = fu.parseRequest(request);
} catch (FileUploadException e) {
logger.info("消息实体不是multipart/form-data类型"+e.getMessage());
map.put("flag", "false");
return map;
}
Iterator i = filelist.listIterator();
    while(i.hasNext()){
    FileItem fi = (FileItem)i.next();
    if(fi.isFormField()){
    String fieldName = fi.getFieldName();
    String fieldValue = fi.getString();
    map.put(fieldName, fieldValue);
    }else{
    String fileName = fi.getName();
    if(fileName.trim().equals("")){
    continue;
    }else{
    int start = fileName.indexOf('\\');
    name = fileName.substring(start+1);
    //察看此获取的文件名称
    logger.info("文件的名称"+name);
    /**此处需要设置获取应用的路径名称用来存放文件*/
    File file = new File("",name);
    try {
fi.write(file);
} catch (Exception e) {
logger.info("文件写入错误"+e.getMessage());
map.put("flag", "false");
}finally{
fi.delete();
}
    }
    }
    }
return map;
}

public UpLoad getInstance(HttpServletRequest request) {
return instance;
}

}
分享到:
评论
1 楼 mickeymak 2008-08-26  
你好, 看了你的代码, 不错

不过我有个疑问, 就是如果表单中有同名但不同值的元素, 譬如同名的<checkbox>但有很多值, 可能会有问题哦, 能完善一下吗?

相关推荐

    Java创建和填充PDF表单域方法

    在Java编程中,创建和填充PDF表单域是一项常见的任务,尤其在数据处理和报告生成领域。本篇文章将深入探讨如何使用Java实现这一功能,并提供一个详细的步骤和示例代码。 首先,表单域是PDF文档中用于用户交互的重要...

    java 实现上传文件到远程服务器

    本篇文章将详细介绍如何利用Java编程语言结合Spring MVC框架来实现文件的远程上传功能。具体实现过程中,我们会采用HTTP协议中的`POST`方法,并通过`multipart/form-data`编码格式来传输数据。 #### 关键概念和技术...

    java 实现文件MD5 加密比较,防止上传重复文件

    这个类可以实现,java语言下通过对上传文件进行MD5加密,然后将加密值与原来上传的文件加密值进行对比,防止上传重复文件。

    java实现上传文件到oss(阿里云)功能示例

    Java 实现上传文件到 OSS(阿里云)的功能示例 Java 实现上传文件到 OSS(阿里云)的功能示例是指通过 Java 语言实现将文件上传到阿里云对象存储服务(OSS)的功能。本示例主要介绍了 Java 实现上传文件到 OSS 的...

    java实现大文件上传并有进度条及其代码解析

    本文将详细介绍如何使用Java实现大文件的上传并展示进度条,同时解析相关的代码实现。 1. **大文件分块上传** 大文件上传的关键在于避免一次性加载整个文件到内存,因为这可能导致内存溢出。Java中,我们可以使用`...

    Java自带的HttpURLConnection访问接口实现文件上传

    在本文中,我们将深入探讨如何使用HttpURLConnection实现文件上传,同时也会涉及普通参数的传递。 首先,我们需要理解HTTP请求的基本结构。HTTP请求通常由以下几个部分组成:请求行、请求头、空行和请求体。在文件...

    java实现大文件上传分片上传断点续传.zip

    本项目"java实现大文件上传分片上传断点续传.zip"提供了一个基于SpringBoot框架的解决方案,它实现了大文件的分片上传和断点续传功能。以下是关于这个项目的关键知识点的详细说明: 1. **大文件上传**: - 大文件...

    Java中,当表单含有文件上传时,提交数据的如何读取(吐血版)

    在Java Web开发中,处理包含文件上传的表单提交是一项常见的任务。当用户通过HTML表单上传文件时,表单的`enctype`属性通常设置为`multipart/form-data`,以便能够传输二进制数据,如图片、文档等。本文将深入探讨...

    Java文件上传jar包加实现步骤.zip

    Java文件上传jar包加实现步骤.zipJava文件上传jar包加实现步骤.zipJava文件上传jar包加实现步骤.zipJava文件上传jar包加实现步骤.zipJava文件上传jar包加实现步骤.zipJava文件上传jar包加实现步骤.zipJava文件上传...

    java代码实现文件上传和下载

    在java代码中实现文件的上传和下载,通过页面的file文件上传到java代码段,获取文件的大小和名字

    java实现文件上传到服务器

    以下是对标题"java实现文件上传到服务器"和描述的详细解释: 1. **文件上传到服务器**: 文件上传通常使用HTTP协议的POST请求完成。在Java Web环境中,我们可以通过Servlet API来处理这样的请求。用户通过HTML表单...

    java多线程加队列上传文件_后台处理

    本文将详细介绍一个基于Java实现的多线程文件上传系统,并结合队列管理技术来优化后台处理流程。该系统通过创建多个线程来并行处理客户端的文件上传请求,同时利用队列结构来协调任务的调度与执行。 #### 关键技术...

    java大文件分块上传断点续传demo

    在Java开发中,大文件上传是一项常见的需求,尤其是在云存储、文件分享等场景下。由于网络环境的不稳定性,单纯的一次性上传大文件可能会因为网络中断而导致上传失败,这时就需要断点续传功能来保证文件传输的可靠性...

    JSch - Java实现的SFTP(文件上传详解篇)

    JSch - Java实现的SFTP(文件上传详解篇)

    java做的一个带进度条的文件上传小项目

    本项目是一个使用Java实现的带有进度条和取消功能的文件上传示例,它利用了Apache的Commons FileUpload库来处理文件上传的过程。Commons FileUpload是Java的一个开源组件,专门用于处理HTTP请求中的多部分/表单数据...

    Java实现图片上传

    总结起来,Java实现图片上传涉及的关键技术有:文件操作(File类)、HTTP请求(Multipart编码)、服务器端文件处理(如Apache Commons FileUpload)、存储策略(文件系统或云存储)以及安全性与性能优化(如文件大小...

    Java实现表单提交(支持多文件同时上传)

    总结来说,Java实现表单提交(支持多文件同时上传)主要涉及以下步骤: 1. 创建HttpClient实例。 2. 构建HttpPost对象,并设置目标URL。 3. 使用MultipartEntityBuilder添加普通表单字段和文件字段。 4. 将构建好的...

    Java多方式实现文件上传.doc

    ### Java多方式实现文件上传——深入探讨Struts2框架下的文件上传机制 #### 实现原理与框架背景 在探讨如何在Struts2中实现文件上传之前,我们首先需要理解其背后的实现原理。Struts2框架利用了Apache Commons ...

    ajax实现java文件下载

    为了克服这一问题,开发人员通常会利用Ajax技术来实现异步文件下载,使得用户在下载文件的同时仍能保持页面的正常操作。本话题将详细探讨如何通过Ajax实现Java文件的下载,并介绍相关的核心概念和技术。 1. **Ajax*...

    java实现pdf上传、下载、在线预览、删除、修改等功能

    在Java编程环境中,处理PDF(Portable Document Format)文件是一项常见的任务,这通常涉及到文件的上传、下载、在线预览、删除以及修改等操作。以下是对这些功能的详细说明: 1. **PDF上传**: PDF文件的上传主要...

Global site tag (gtag.js) - Google Analytics