博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
maven servlet上传文件
阅读量:7110 次
发布时间:2019-06-28

本文共 6138 字,大约阅读时间需要 20 分钟。

hot3.png

这里我建立了一个maven工程,直接添加下载的依赖,为什么选择maven?因为我的目的是为了完成上传,而不是为了去配置环境~!在上传的时候,必须要添加io这个依赖的包,如果我这里用的是servlet,就需要添加对应的javax.servlet依赖,这是很重要的。另外,在表单提交的时候,enctype="multipart/form-data"是必须要填的,这个在w3c文档里有明确规定,而对于上传的路径、怎么上传等这些则是次要的,所以我没有过多的去判断有什么类型的文件,也就是说,这里我是为了实现servlet上传而实现上传。    这是最基本的原理,无论你是spring mvc上传还是struts2,其实原理都是差不多的。
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
Insert title here
选择文件:
Servlet Upload Web Application
index.jsp
uploadServlet
com.iflytek.test.MyUploadServlet
fileName
myUploadServlet
cachePath
cachePath
uploadServlet
/uploadServlet
4.0.0
war
ServletUploadTrain
com.iflytek.test
ServletUploadTrain
0.0.1-SNAPSHOT
org.mortbay.jetty
maven-jetty-plugin
6.1.7
8888
30000
${project.build.directory}/${pom.artifactId}-${pom.version}
/
junit
junit
4.11
commons-io
commons-io
2.4
commons-fileupload
commons-fileupload
1.2.2
javax.servlet
servlet-api
2.5
provided
package com.iflytek.test;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.List;import javax.servlet.ServletConfig;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.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class MyUploadServlet extends HttpServlet {	/**	 * 文件存放地址	 */	private String file_path;		/**	 * 缓存路径	 */	private File cacheFile;	/*	 * (non-Javadoc)	 * 	 * @see	 * javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest	 * , javax.servlet.http.HttpServletResponse)	 */	@Override	protected void doGet(HttpServletRequest req, HttpServletResponse resp)			throws ServletException, IOException {		this.doPost(req, resp);	}	/*	 * (non-Javadoc)	 * 	 * @see	 * javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest	 * , javax.servlet.http.HttpServletResponse)	 */	@Override	protected void doPost(HttpServletRequest req, HttpServletResponse resp)			throws ServletException, IOException {		//super.doPost(req, resp);		// resp.setContentType("text/plain");		// 设置字符集		resp.setCharacterEncoding("GBK");		//		PrintWriter printWriter = resp.getWriter();		// 创建一个基于硬盘的工厂,一般用来缓冲		DiskFileItemFactory factory = new DiskFileItemFactory();		factory.setSizeThreshold(5*1024);		//设置缓存文件		factory.setRepository(cacheFile);				ServletFileUpload fileUpload = new ServletFileUpload(factory);		// 页面请求传递的信息量的最大值为20M		fileUpload.setSizeMax(20 * 1024 * 1204);		// 设置单个文件传递的大小为6m		fileUpload.setFileSizeMax(6 * 1024 * 1024);		try {			List
list = fileUpload.parseRequest(req); for (FileItem fileItem : list) { if (fileItem.isFormField()) { // 提交的是表单元素 this.processFormFileld(fileItem, printWriter); } else { this.processUploadFile(fileItem, printWriter); } } } catch (FileUploadException e) { e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 如果表单中的是文件信息格式,则将文件保存到指定的目录下 * * @param fileItem * 文件信息 * @param printWriter * 输出打印对象 */ private void processUploadFile(FileItem fileItem, PrintWriter printWriter) throws Exception { String filename = fileItem.getFieldName(); int index = filename.lastIndexOf("\\"); filename = filename.substring(index + 1, filename.length()); long file_size = fileItem.getSize(); if ("".equals(filename) && file_size == 0) { return; } File upload_file = new File(file_path + "/" + filename); // 系统会自动将临时文件删除 fileItem.write(upload_file); printWriter.println("

文件" + filename + "上传成功!

"); printWriter.println("

文件[" + filename + "]的大小为" + file_size + "

"); } /** * 如果表单的信息为文本信息,则打印简单的提示 * * @param fileItem * 文本信息 * @param printWriter * 输出打印对象 */ private void processFormFileld(FileItem fileItem, PrintWriter printWriter) throws Exception { String name = fileItem.getFieldName(); String value = fileItem.getString(); printWriter.println("

" + name + ":" + value + "

"); } /* * (non-Javadoc) * * @see javax.servlet.GenericServlet#init(javax.servlet.ServletConfig) */ @Override public void init(ServletConfig config) throws ServletException { super.init(config); // 查询要上传文件所在的文件夹是否存在,如不存在就建立一个文件夹 String fileName = config.getInitParameter("fileName"); String cachePath = config.getInitParameter("cachePath"); // 通过虚拟的初始化参数来构建一个真实的文件路径 file_path = this.getServletContext().getRealPath(fileName); cachePath = this.getServletContext().getRealPath(cachePath); File realFile = new File(file_path); cacheFile = new File(cachePath); if(!cacheFile.exists()){ cacheFile.mkdirs(); } if (!realFile.exists()) { // 建立一些列路径 realFile.mkdirs(); } }}

转载于:https://my.oschina.net/u/586106/blog/98772

你可能感兴趣的文章
【Python基础 06】运算符
查看>>
Java 使用 Redis
查看>>
worldwind for java 探究之导入文件生成图层
查看>>
添加几张调价单
查看>>
向程序猿大军迈进
查看>>
Centos系统mysql 忘记root用户的密码
查看>>
inux访问控制的流程-tcp_wrappers讲解
查看>>
Spring学习总结(6)——Spring之核心容器bean
查看>>
POJ 2533: Longest Ordered Subsequence
查看>>
DNS域名解析过程 五月的仓颉
查看>>
Comment Mail Notify:适用于Twenty Ten主题的WordPress评论邮件回复代码
查看>>
android中Handler详解
查看>>
如何在腾讯云快速构建一个Wordpress个人站点
查看>>
nginx与tomcat结合,动静分离
查看>>
IP Source Guard
查看>>
jvm学习-垃圾收集
查看>>
linux用文件锁实现保证一个程序只能启动一个进程
查看>>
使用wget工具抓取网页和图片
查看>>
linux下oracle开机启动
查看>>
【Linux命令】对抗遗忘 -ls 命令系列
查看>>