java文件上传

本文介绍了一个简单的文件上传实现方案,包括所需依赖库、页面代码及Servlet处理逻辑。通过使用commons-fileupload和commons-io库,实现了文件上传过程中的中文支持、大小限制等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、加入2个jar包:commons-fileupload-1.2.1.jar、commons-io-2.0.jar(依赖包)

2、页面代码

index.jsp

 <body>
    <form action="simpleFileupload" method="post" enctype="multipart/form-data">
    	最简单的文件上传:<input type="file" name="fileupload">
    	描述:<input type="text" name="desc">
    	<input type="submit" value="submit">
    </form>
  </body>

3、servlet代码

public class SimpleFileupload extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
		
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		//创建一个DiskFileItemFactory工厂
		DiskFileItemFactory factory=new DiskFileItemFactory();
		//创建一个文件上传解析器
		ServletFileUpload upload=new ServletFileUpload(factory);
		//解决上传文件名的中文乱码
		upload.setHeaderEncoding("utf-8");
		factory.setSizeThreshold(1024*500);//设置内存的临界值为500K
		File linshi=new File("E:\\linshi");//当超过500K的时候,存到一个临时文件夹中
		factory.setRepository(linshi);
		upload.setSizeMax(1024*1024*5);
		try {
			//得到FileItem的集合items
			List<FileItem> items=upload.parseRequest(request);
			//遍历items
			for(FileItem item:items){
				//若是一个一般的表单域,打印信息
				if(item.isFormField()){
					String name=item.getFieldName();
					String value=item.getString();
					System.out.println(name+":"+value);
				}	 // 若是文件域则把文件保存到 e:\\files 目录下
				else{
					String fileName=item.getName();
					long sizeInBytes=item.getSize();
					System.out.println(fileName);
					System.out.println(sizeInBytes);
					
					InputStream in=item.getInputStream();
					byte[] buffer=new byte[1024];
					int len=0;
					fileName="e:\\files\\"+fileName;//文件最终上传的位置
					System.out.println(fileName);
					OutputStream out=new FileOutputStream(fileName);
					while((in.read(buffer))!=-1){
						out.write(buffer,0,len);
					}
					out.close();
					in.close();
				}
			}
		} catch (FileUploadException e) {
			e.printStackTrace();
		}
	}

}
运行页面文件即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值