java语言 百分网手机站

JSP页面如何实现文件上传下载

时间:2020-11-03 13:23:42 java语言 我要投稿

JSP页面如何实现文件上传下载

  Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。下面,小编为大家搜索整理了JSP页面如何实现文件上传下载,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!

  名称:jsp页面上传类

  作者:SinNeR

  Mail:vogoals[at]hotmail.com

  特点:

  可以多文件上传;

  返回上传后的文件名;

  form表单中的其他参数也可以得到。

  先贴上传类,JspFileUpload

  package com.vogoal.util;

  import java.io.BufferedOutputStream;

  import java.io.File;

  import java.io.FileOutputStream;

  import java.io.IOException;

  import java.text.SimpleDateFormat;

  import java.util.ArrayList;

  import java.util.Date;

  import java.util.Hashtable;

  import javax.servlet.ServletInputStream;

  import javax.servlet.http.HttpServletRequest;

  /*

  * vogoalAPI 1.0

  * Auther SinNeR@blueidea.com

  * by vogoal.com

  * mail: vogoals@hotmail.com

  */

  /**

  * JSP上传文件类

  *

  * @author SinNeR

  * @version 1.0

  */

  public class JspFileUpload {

  /** request对象 */

  private HttpServletRequest request = null;

  /** 上传文件的路径 */

  private String uploadPath = null;

  /** 每次读取得字节的大小 */

  private static int BUFSIZE = 1024 * 8;

  /** 存储参数的Hashtable */

  private Hashtable paramHt = new Hasptable();

  /** 存储上传的文件的文件名的ArrayList */

  private ArrayList updFileArr = new ArrayList();

  /**

  * 设定request对象。

  *

  * @param request

  * HttpServletRequest request对象

  */

  public void setRequest(HttpServletRequest request) {

  this.request = request;

  }

  /**

  * 设定文件上传路径。

  *

  * @param path

  * 用户指定的文件的上传路径。

  */

  public void setUploadPath(String path) {

  this.uploadPath = path;

  }

  /**

  * 文件上传处理主程序。

  *

  * @return int 操作结果 0 文件操作成功;1 request对象不存在。 2 没有设定文件保存路径或者文件保存路径不正确;3

  * 没有设定正确的enctype;4 文件操作异常。

  */

  public int process() {

  int status = 0;

  // 文件上传前,对request对象,上传路径以及enctype进行check。

  status = preCheck();

  // 出错的时候返回错误代码。

  if (status != 0)

  return status;

  try {

  // 参数或者文件名

  String name = null;

  // 参数的value

  String value = null;

  // 读取的流是否为文件的标志位

  boolean fileFlag = false;

  // 要存储的文件。

  File tmpFile = null;

  // 上传的文件的名字

  String fName = null;

  FileOutputStream baos = null;

  BufferedOutputStream bos = null;

  // 存储参数的Hashtable

  paramHt = new Hashtable();

  updFileArr = new ArrayList();

  int rtnPos = 0;

  byte[] buffs = new byte[BUFSIZE * 8];

  // 取得ContentType

  String contentType = request.getContentType();

  int index = contentType.indexOf("boundary=");

  String boundary = "--" + contentType.substring(index + 9);

  String endBoundary = boundary + "--";

  // 从request对象中取得流。

  ServletInputStream sis = request.getInputStream();

  // 读取1行

  while ((rtnPos = sis.readLine(buffs, 0, buffs.length)) != -1) {

  String strBuff = new String(buffs, 0, rtnPos);

  // 读取1行数据

  if (strBuff.startsWith(boundary)) {

  if (name != null && name.trim().length() > 0) {

  if (fileFlag) {

  bos.flush();

  baos.close();

  bos.close();

  baos = null;

  bos = null;

  updFileArr.add(fName);

  } else {

  Object obj = paramHt.get(name);

  ArrayList al = new ArrayList();

  if (obj != null) {

  al = (ArrayList) obj;

  }

  al.add(value);

  System.out.println(value);

  paramHt.put(name, al);

  }

  }

  name = new String();

  value = new String();