当前位置:主页 > 网络编辑 > JSP编程 > 正文

JavaServlet的文件上传和下载实现方法

02-07 JSP编程

先分析一下上传文件的流程

1-先通过前段页面中的选择文件选择要上传的图片

index.jsp

lt;%@ page language="java" import="java.util.*" pageEncoding="utf-8"
 contentType="text/html; charset=UTF-8"%gt;

lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"gt;
lt;htmlgt;
 lt;headgt;
  lt;titlegt;My JSP 'index.jsp' starting pagelt;/titlegt;
  lt;meta http-equiv="content-type" content="text/html;charset=utf-8"gt;
  lt;meta http-equiv="pragma" content="no-cache"gt;
  lt;meta http-equiv="cache-control" content="no-cache"gt;
  lt;meta http-equiv="expires" content="0"gt;
  lt;meta http-equiv="keywords" content="keyword1,keyword2,keyword3"gt;
  lt;meta http-equiv="description" content="This is my page"gt;
  
  lt;script type="text/javascript" src="js/jquery.min.js"gt;lt;/scriptgt;
  lt;script type="text/javascript" src="js/common.js"gt;lt;/scriptgt;
  lt;script type="text/javascript" src="js/ajaxfileupload.js"gt;lt;/scriptgt;
 lt;/headgt;
 lt;bodygt;
  lt;input type="file" value="上传" name="inputImage" id="inputImage"gt;
  lt;input type="button" value="上传" id="upload"gt;
  
  lt;a id="downLoad"gt;下载lt;/agt;
 lt;/bodygt;
lt;/htmlgt;

2-点击提交按钮,通过ajax的文件上传访问服务器端

common.js  

var path = (function() {
 //获取当前网址
 var curWwwPath = window.document.location.href;
 //获取主机地址之后的目录
 var pathName = window.document.location.pathname;
 var pos = curWwwPath.indexOf(pathName);
 //获取主机地址
 var localhostPath = curWwwPath.substring(0, pos);
 //获取带"/"的项目名
 var projectName = pathName.substring(0, pathName.substr(1).indexOf('/') + 1);
 return {
   curWwwPath: curWwwPath,
   pathName: pathName,
   localhostPath: localhostPath,
   projectName: projectName,
   //部署路径
   deployPath: localhostPath + projectName
  };
})();
// 文件下载
$("a[id=downLoad]").click(function(){
 window.location.href=path.deployPath+"/fileDown";
});
// 文件上传
$("input[id=upload]").click(function() {
 $.ajaxFileUpload( {
  url : path.deployPath + "/fileUp", // 处理页面的绝对路径
  fileElementId : "inputImage", //file空间的id属性
  dataType : "json",
  success : function(data) {
   alert("上传成功");
  }
 });
});

3-服务器端响应保存或者下载

保存上传文件的FileUpload.java

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.stu.util.HttpUtil;
/**
 * 文件名称: com.stu.fileupload.FileUpload.javalt;br/gt;
 * 初始作者: Administratorlt;br/gt;
 * 创建日期: 2018-1-31lt;br/gt;
 * 功能说明: 文件上传 lt;br/gt;
 * =================================================lt;br/gt;
 * 修改记录:lt;br/gt;
 * 修改作者 日期 修改内容lt;br/gt;
 * ================================================lt;br/gt;
 * Copyright (c) 2010-2011 .All rights reserved.lt;br/gt;
 */
public class FileUpload extends HttpServlet {
 private static final long serialVersionUID = 1L;
 @Override
 protected void service(HttpServletRequest req, HttpServletResponse res)
 throws ServletException, IOException {
  // 获取到当前服务器所在的路径
  String serverPath = req.getSession().getServletContext().getRealPath("/");
  // 设置保存上传文件的路径
  String saveDirPath = serverPath + "img";
  File saveDirPathFileObj = new File(saveDirPath);
  // 如果当用来存放文件的目录不存在时,要创建该目录
  if (!saveDirPathFileObj.exists()) {
   saveDirPathFileObj.mkdirs();
  }
  // 创建一个解析器工厂
  DiskFileItemFactory factory = new DiskFileItemFactory();
  // 设置工厂的缓存区大小
  factory.setSizeThreshold(5 * 1024);
  // 文件上传的解析器(文件上传对象)
  ServletFileUpload upload = new ServletFileUpload(factory);
  // 设置上传文件的最大值
  upload.setSizeMax(3 * 1024 * 1024);
  // 设置编码格式
  upload.setHeaderEncoding("UTF-8");
  try {
   // 上传以后的文件名
   Listlt;Stringgt; uploadFileNames = new ArrayListlt;Stringgt;();
   Listlt;FileItemgt; fileItems = upload.parseRequest(req);
   System.out.println(fileItems);
   for (FileItem file : fileItems) {
    // 新的文件名
    String saveFileName = UUID.randomUUID().toString().replace("-", "");
    // 文件的后缀
    String oldFileName = new String(file.getName().getBytes(),
    "UTF-8");
    System.out.println("oldFileName" + oldFileName);
    String fileType = oldFileName.substring(oldFileName.lastIndexOf("."));
    // 新的文件路径
    String saveFilePath = saveDirPath + File.separator
    + saveFileName + fileType;
    uploadFileNames.add(saveFileName + fileType);
    // 保存上传的文件
    file.write(new File(saveFilePath));
   }
   System.out.println(uploadFileNames);
   HttpUtil.setAttribute(req, "urls", uploadFileNames);
   res.setContentType("application/json;charset=utf-8");
   PrintWriter pw = res.getWriter();
   pw.print(JSONArray.fromObject(uploadFileNames));
  } catch (FileUploadException e) {
   e.printStackTrace();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

文章来源: 本文由SEO优化博客-壹帆SEO站长Dglake收集编辑 ,转载请保留链接: http://www.s-e-m.cn/JSPbiancheng/38107.html

博客主人Dglake
草根站长,潭州教育SEO研究中心学员、黄埔俱乐部纵生会员,目前从事网络营销工作,岗位为推广主管;这是新做的博客网站,主要是分享经验文章.
  • 2353文章总数
  • 5510访问次数
  • 建站天数
  • 热门文章