fileupload

转载 2012年03月29日 20:31:08

lib:commons-fileupload-1.1.jar;commons-io-1.2.jar

静态页面文件代码如下


<HTML>
<BODY>
<form name="form1" method="post" action="c4.jsp" enctype="multipart/form-data">

<table width="85%" border="0">
  <tr>
    <td>
        名字<input type="text" name="username" size="40">
    </td>
  </tr>

  <tr>
    <td>
     图片   <input type="file" name="imagefile" size="40">
    </td>
  </tr>

  <tr>
    <td>
      word  <input type="file" name="wordfile" size="40">
    </td>
  </tr>

  <tr>
    <td>复选框 
        <input type="checkbox" name="software" value="struts">
        Struts
        <input type="checkbox" name="software" value="tomcat">
        Tomcat
    </td>
  </tr>

  <tr>
    <td align="left">单选框:
      <input type="radio" name="team" value="indians">
      Indians
      <input type="radio" name="team" value="yankees">
      Yankees
    </td>
  </tr>

  <tr>
    <td>多选下拉:
      <select name="books" size="5" multiple>
        <option value="ajp">Advanced JavaServer Pages</option>
        <option value="sia">Struts In Action</option>
      </select>
    </td>
  </tr>

  <tr>
    <td colspan="2" align="center">
      <input type="submit" name="submit" value="提交">
    </td>
  </tr>
</table>
</form>
</BODY>
</HTML>

------------------------

c4.jsp的内容如下

<%@page import="practice.FileUpLoader2"%>
<%
 FileUpLoader2 fileUpload = new FileUpLoader2(request);
     fileUpload.upload(request);
request.getRequestDispatcher("msg.jsp").forward(request, response);
%>

------------------------

msg.jsp内容如下

<%@page language="java" contentType="text/html;charset=GBK"%>
<%if (request.getAttribute("message") != null){%>
<div><%=request.getAttribute("message")%><%request.removeAttribute("message")%}>  <div>

-----------------------

FileUpLoader2内容如下

package practice;


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

import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.DefaultFileItemFactory;
import org.apache.commons.fileupload.FileItem;


public class FileUpLoader2 {
    //文件上传出错后在页面提示的消息
    static StringBuffer message = new StringBuffer();
    //当上传文件超过限制时设定的临时文件位置
    private String tempPath = "d:\\tempzjd";

    //文件上传目标目录
    private String destinationPath = "d:\\tempzjd2";

    //获取的上传请求
    private HttpServletRequest fileuploadRequest = null;

    //设置最多只允许在内存中存储的数据,单位:字节
    private int sizeThreshold = 4096;

    //设置允许用户上传文件大小,单位:字节
    //共100M
    private long sizeMax = 104857600;

    public FileUpLoader2() {
    }


    public FileUpLoader2(HttpServletRequest fileuploadRequest) {
        this.fileuploadRequest = fileuploadRequest;
    }


    public void upload(HttpServletRequest request) throws FileUploadException {
        //如果请求不是文件上传,则返回
        if (!FileUpload.isMultipartContent(request)) {
            message.append("Request is not multipart!");
            request.setAttribute("message", message.toString());
            return;
        }
        //如果没有临时目录,则创建它
        if (!(new File(tempPath).isDirectory())) {
            try {
                new File(tempPath).mkdirs();
            } catch (SecurityException e) {
                System.out.println("can not make security direcoty");
            }
        }

        //如果没有上传目的目录,则创建它
        if (!(new File(destinationPath).isDirectory())) {
            try {
                new File(destinationPath).mkdirs();
            } catch (SecurityException e) {
                System.out.println("can not make security direcoty");
            }
        }

        DiskFileUpload fileUpload = new DiskFileUpload(new
                DefaultFileItemFactory());
//        DiskFileItemFactory factory = new DiskFileItemFactory();
        fileUpload.setSizeThreshold(sizeThreshold);
        fileUpload.setSizeMax(sizeMax);
        fileUpload.setRepositoryPath(tempPath);

        List items = fileUpload.parseRequest(request);
        Iterator itr = items.iterator();
        FileItem item;
        while (itr.hasNext()) {
            item = (FileItem) itr.next();

            String fieldName = item.getFieldName();
            if (item.isFormField()) { //对普通的form内容处理
                String fieldValue = item.getString();
                if (fieldName.equals("software")) {
                    System.out.println(fieldValue);
                } else {
                    System.out.println(fieldValue);
                }
            } else {
                if (item.getSize() <= 0) {
                    continue;
                }
                String contentType = item.getContentType();
                File uploadedFile = new File(item.getName());
                File savedFile = null;
                if (fieldName.equals("imagefile")) { //imagefile对应页面上input的名字
                    if (!contentType.startsWith("image")) {
                        message.append("Incorrect file uploaded! " +
                                       uploadedFile.getName() +
                                       "is not of type image."
                                );
                        continue;
                    }

                    savedFile = new File(destinationPath, uploadedFile.getName());
                    try {
                        item.write(savedFile);
                    } catch (Exception ex) {
                    }
                } else {
                    if (contentType.indexOf("msword") == -1) {
                        message.append("Incorrect File uploaded! " +
                                       uploadedFile.getName() +
                                       " is not of type Word."
                                );
                        continue;
                    }
                    savedFile = new File(destinationPath, uploadedFile.getName());
                    try {
                        item.write(savedFile);
                    } catch (Exception ex1) {
                    }
                }
            }
        }
        request.setAttribute("message", message.toString());
    }

    public String getTempPath() {
        return tempPath;
    }

    public int getSizeThreshold() {
        return sizeThreshold;
    }

    public long getSizeMax() {
        return sizeMax;
    }


    public HttpServletRequest getFileuploadRequest() {
        return fileuploadRequest;
    }

    public String getDestinationPath() {
        return destinationPath;
    }

    public StringBuffer getMessage() {
        return message;
    }

    public void setDestinationPath(String destinationPath) {
        this.destinationPath = destinationPath;
    }

    public void setFileuploadRequest(HttpServletRequest fileuploadRequest) {
        this.fileuploadRequest = fileuploadRequest;
    }


    public void setSizeMax(long sizeMax) {
        this.sizeMax = sizeMax;
    }

    public void setSizeThreshold(int sizeThreshold) {
        this.sizeThreshold = sizeThreshold;
    }

    public void setTempPath(String tempPath) {
        this.tempPath = tempPath;
    }

    public void setMessage(StringBuffer message) {
        this.message = message;
    }


}
 附录:普通文件的contentType

world: application/msword
excel: application/vnd.ms-excel
pdf: application/pdf
txt: text/plain
ppt: application/vnd.ms-powerpoint
htm: text/html

FileUpload控件优化样式

演示图 - IE8 演示图 - Chrome 按钮图片 - sprites_btn23.png  代码块 - CSS:/*==== FileUpload ====*...
  • qq285679784
  • qq285679784
  • 2015年10月19日 11:58
  • 2498

FileUpload控件的用法

FileUpload控件是一个很重要的控件,它被Web服务器最终解释为形如“”这样的普通HTML控件。它有如下常见属性: 属性名 数据类型 说明 FileBytes byte[] 上传的文件内容的字节...
  • yingjiell
  • yingjiell
  • 2010年10月28日 13:43
  • 22776

ASP.NET初学笔记:FileUpload控件

FileUpLoad控件用于用户向Web应用程序上传文件。文件上传后,可以把文件保存在任意地方,通常把文件保存在文件系统或数据库。向页面添加FileUpLoad控件会自动地为服务器的标签添加encty...
  • wangliang262359
  • wangliang262359
  • 2010年10月10日 21:36
  • 4541

FileUpload上传控件用法详解--来自MSDN帮助文档

FileUpload 类显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上载到 Web 服务器。用户通过在控件的文本框中输入本地计算机上文件的完整路径(例如,C:/MyFi...
  • zhangchuccc
  • zhangchuccc
  • 2010年06月07日 16:21
  • 9151

fileupload上传时传递参数

jQuery.fileupload 传递参数
  • weiyongliang_813
  • weiyongliang_813
  • 2015年11月24日 15:43
  • 4521

更改FileUpload控件中browse按钮的显示文字

1. 
  • encienqi
  • encienqi
  • 2009年11月17日 17:22
  • 4610

fileupload上传显示进度

无标题页
  • happy664618843
  • happy664618843
  • 2010年10月21日 14:53
  • 3163

图片上传之fileupload

最近学习了图片上传这个功能,这个功能比较常见,因此来整理一下,了解上传的基本原理,以便后期遇到图片上传功能可以很快上手。        要说图片上传,我们先来说一下图片上传后存储的两种方式:一种是将图...
  • lvshihua
  • lvshihua
  • 2015年05月31日 14:53
  • 2688

bootstrap fileupload相关

前台页面代码: js: $("#input-1").fileinput({//这里的id是input标签的id        uploadUrl: '/appr/upload/doFi...
  • twj18744035448
  • twj18744035448
  • 2016年03月09日 14:04
  • 1170

FileUpload控件文件上传、扩容、限制文件类型及上传验证

首先,文件上传需要使用FileUpload控件,针对于此控件我们来进行一系列的操作。 1、将选中文件上传到目标位置: //获取上传文件的文件名称 string name = File...
  • xianglikai1
  • xianglikai1
  • 2016年07月30日 22:18
  • 1430
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:fileupload
举报原因:
原因补充:

(最多只允许输入30个字)