关闭

jsp 上传文件

103人阅读 评论(0) 收藏 举报
分类:


将commons-fileupload-1.2.1.jar commons-io-1.4.jar引入项目

上传组件代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML >
<html>
  <head>  
    <title>上传文件</title>
  </head> 
  <body>
   	 上传文件程序应用示例
	<form action='action.jsp' method='post' enctype='multipart/form-data'>
		<%-- 类型enctype用multipart/form-data,这样可以把文件中的数据作为流式数据上传,不管是什么文件类型,均可上传。--%>
		请选择要上传的文件
		<input type='file' name='upfile' size='1'>
		<input type='submit' value='提交'>
	</form>
  </body>
</html>

接收文件代码

DiskFileUpload fu = new DiskFileUpload();	
			//   设置最大文件尺寸,这里是4MB		
			 fu.setSizeMax(4194304);
			//   设置缓冲区大小,这里是4kb
   			fu.setSizeThreshold(4096);
			//   设置临时目录:
  			 fu.setRepositoryPath(tempPath);
			//   得到所有的文件:
			List list=fu.parseRequest(request);
			FileItem f=(FileItem)list.get(0);
DiskFileUpload类会抛出异常,所以必须用try代码块包起来,fu.parseRequest(request)返回的是List类型,不能用File类型接收,从List中读取文件时,最好也不用File类,而是用FileItem类,用前者我无法用getName()读出文件名,对其它没有深究,而FileItem是专门用来接收从表单传过来的文件的,所以最好用它读文件。

当文件大小超过最大尺寸时,异常会被抛出,当大小超过缓冲区尺寸时,会将文件暂时存在临时目录中

File des=new File("e:temp/img/"+x+".jpg");
f.write(des);

可以将上传的文件写进硬盘。

    完整代码:

<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="utf-8"%>
<%@ page import="org.apache.commons.fileupload.*"  import="java.io.*"%>
<!DOCTYPE html >
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>接收文件</title>
	</head>
	<body>
		<%		
			out.println("接收文件<br/>");
			String tempPath="e:/temp";
			try{
				DiskFileUpload fu = new DiskFileUpload();	
			//   设置最大文件尺寸,这里是4MB		
			 fu.setSizeMax(4194304);
			//   设置缓冲区大小,这里是20kb
   			fu.setSizeThreshold(20480);
			//   设置临时目录:
  			 fu.setRepositoryPath(tempPath);
			//   得到所有的文件:
			List list=fu.parseRequest(request);
			//out.println("1<br/>");
			FileItem f=(FileItem)list.get(0);
			//out.println("2<br/>");
			String str="空";			
			str=f.getName();
			out.println(str);
			Random r=new Random();
			int x=r.nextInt();
			File des=new File("e:temp/img/"+x+".jpg");
			f.write(des);
			}catch(Exception e)
			{
				out.println("文件过大");
			} 			
		 %>
	</body>
</html>





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:17788次
    • 积分:488
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:5篇
    • 译文:0篇
    • 评论:0条
    文章分类