java时间文件的上传

上传对表单的限制:

 *method="post"--上传的内容显示在页面不好

*enctype="multipart/form-data"

*<input type="file" name="xxx"/>

jsp页面代码:

 

<form action="/Demo_file/Up3" method="post" enctype="multipart/form-data">
  	<input type="file" name="zhaopian">
  	<input type="submit" value="上传">
  </form>
Servlet代码:


 

package com.sxjyatc.Up;

import java.io.File;
import java.io.IOException;
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 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;
/**
 * 演示上传文件的文件名路径限制
 * @author Administrator
 *
 */
public class UploadServlet3  extends HttpServlet{
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		/*编码问题*/
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html;charset=utf-8");
		//创建工厂
		DiskFileItemFactory factory1 = new DiskFileItemFactory();
		//创建工厂解析器
		ServletFileUpload fileU = new ServletFileUpload(factory1);
		//限制单个文件大小为100k
		fileU.setFileSizeMax(100*1024);
		//限制整个文件大小
		fileU.setSizeMax(1024*1024);
		try {
			//得到fileItem集合
			List<FileItem> fileItem = fileU.parseRequest(req);
			
			//得到文件表单
			FileItem file1 = fileItem.get(0);
			
			/*
			 *1,得到文件的保存路径 
			 */
			String root = this.getServletContext().getRealPath("/WEB-INF/file1");
			//先去掉绝对路径
			String filename = file1.getName();
			int x = filename.lastIndexOf("\\");
			if(x!=-1){
				filename=filename.substring(x+1);
			}
			/*
			 * 文件同名问题
			 * 用uuid 生成不重复的随机码
			 */
			String savename = UUID.randomUUID().toString().replace("-", "")+"_"+filename;
			
			
			/*得到文件名的hashcode*/
			int filehash = filename.hashCode();
			//1,将hashcode转成16位
			String hex=Integer.toHexString(filehash);
			//2,获取hex前两个字母 与文件名合在一起
			File driFile = new File(root,hex.charAt(0)+"/"+hex.charAt(1));
			//3,生成目录连
			driFile.mkdirs();
			//4,创建目录文件
			File dostFile = new File(driFile,savename);
			//写入文件
			try {
				file1.write(dostFile);
				System.out.println("完成");
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
				
		} catch (FileUploadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}
}
要用到的两个包:

 commons-fileupload-1.3.3.jar(基于io包才可以用)

commons-io-2.6.jar


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值