jsp 上传文件
2015-11-21 15:51
459 查看
将commons-fileupload-1.2.1.jar commons-io-1.4.jar引入项目
上传组件代码
接收文件代码
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>
上传组件代码
<%@ 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>
相关文章推荐
- 操作符、语句、函数——Javascript高级程序设计
- JS七种加密解密方法
- 02 计算字符串表达式 [类似于js eval函数]
- 超详细的javascript数组方法汇总
- JS中offsetLeft,Left,clientLeft的区别
- HTML5 JavaScript3D游戏引擎和框架
- javascript实现动态统计图开发实例
- js控制json对象、json数组总结
- ResultSet与JSON之间的转化
- JS:offsetWidth\offsetleft 等图文解释
- js清除缓存方法
- servlet&jsp 输入输出流
- KnockOut JS 学习中遇到的几个问题
- js实现索引图片切换效果
- HTML5、JavaScript 3D游戏引擎和框架
- HTML5、JavaScript 3D游戏引擎和框架
- javascript对闭包的理解
- js浏览器兼容问题总结及解决办法
- Jackson解析json数据时,Bean对象的内部类必须定义为static
- js 文件恢复 window 解析器默认打开