Servlet文件上传

Servlet文件上传要点:

1、设置注解:@MultipartConfig

2、表单提交方式:post

3、设置表单提交编码格式:enctype="multipart/form-data"

4、代码如下:

package com.tiger.fileload;

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.*;
import javax.servlet.http.*;
/**
 * 单文件上传
 * 1、设置注解:@MultipartConfig
 * 2、表单提交方式:post
 * 3、设置表单提交编码格式:enctype="multipart/form-data"
 * @author tiger
 * @time 2017年9月1日
 */
@WebServlet("/fileloadone")
@MultipartConfig
public class FileupOne extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取文件对象:filename前端表单提交获取。
		Part part = request.getPart("filename");
		//获取上传文件名
		String fileName = getFileName(part);
		//获取上传文件夹
		String uploadFolder = getUploadFolder(request, "tigerUploadOne");
		
//		part.write(uploadFolder+fileName);
		
		//获取文件输入流
		InputStream is = part.getInputStream();
		//获取文件输出流
		OutputStream os = new FileOutputStream( new File(uploadFolder+fileName));
		System.out.println("one:"+uploadFolder+fileName);
		//上传文件
		uploadFile(is, os);
		//关闭传输流
		os.flush();
		os.close();
	}
	/**
	 * 上传文件方法
	 * @param is
	 * @param os
	 */
	private void uploadFile(InputStream is,OutputStream os) {
		//缓存大小,一次读取1024个字节
		byte[] buff = new byte[1024];
		int len = 0;
		try {
			while ((len = is.read(buff)) != -1) {
				os.write(buff, 0, len);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 获取上传文件名
	 * @param part
	 * @return
	 */
	private String getFileName(Part part) {
		String header=part.getHeader("Content-Disposition");
		String fileName=header.substring(header.indexOf("filename=\"")+10, header.lastIndexOf("\""));
		return fileName;
	}
	/**
	 * 获取文件上传路径
	 * @param request HttpServletRequest请求对象
	 * @param upload 文件上传的文件夹
	 * @return
	 */
	private String getUploadFolder(HttpServletRequest request,String upload) {
		//获取上传文件的路径名:upload为自己设置
		String uploadFolder = request.getServletContext().getRealPath(File.separator+upload) + File.separator;
		//以上一步获取的文件路径名创建上传文件夹
		File file = new File(uploadFolder);
		//如果文件夹不存在,则创建
		if (!file.exists()) {
			file.mkdirs();
		}
		return uploadFolder;
	}
}
package com.tiger.fileload;

import java.io.*;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.annotation.*;
import javax.servlet.http.*;
/**
 * 多文件上传
 * 1、设置注解:@MultipartConfig
 * 2、表单提交方式:post
 * 3、设置表单提交编码格式:enctype="multipart/form-data"
 * @author tiger
 * @time 2017年9月1日
 */
@WebServlet("/fileloadmore")
@MultipartConfig
public class FileupMore extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取文件对象List:filename前端表单提交获取。
		Collection
   
   
    
     partList = request.getParts();
		for (Part part : partList) {
			if(part.getName().equals("filename")) {
				//获取上传文件名
				String fileName = getFileName(part);
				//获取上传文件夹
				String uploadFolder = getUploadFolder(request, "tigerUploadMore");
				//将文件写入服务器
				part.write(uploadFolder+fileName);
				System.out.println("more:"+uploadFolder+fileName);
			}
		}
	}
	/**
	 * 获取上传文件名
	 * @param part
	 * @return
	 */
	private String getFileName(Part part) {
		String header=part.getHeader("Content-Disposition");
		String fileName=header.substring(header.indexOf("filename=\"")+10, header.lastIndexOf("\""));
		return fileName;
	}
	/**
	 * 获取文件上传路径
	 * @param request HttpServletRequest请求对象
	 * @param upload 文件上传的文件夹
	 * @return
	 */
	private String getUploadFolder(HttpServletRequest request,String upload) {
		//获取上传文件的路径名:upload为自己设置
		String uploadFolder = request.getServletContext().getRealPath(File.separator+upload) + File.separator;
		//以上一步获取的文件路径名创建上传文件夹
		File file = new File(uploadFolder);
		//如果文件夹不存在,则创建
		if (!file.exists()) {
			file.mkdirs();
		}
		return uploadFolder;
	}
}




    
    

    
    ---fileload-one---



    
    
文件上传1:
文件上传2:
文件上传3:
---fileload-more---
文件上传1:
文件上传2:
文件上传3:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ljt-tiger

thanks

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值