jsp 上传文件

来源:互联网 发布:怎么提高编程打字速度 编辑:程序博客网 时间:2024/05/01 01:13


将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