JAVA 实现上传功能.docx
- 文档编号:30037454
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:43
- 大小:40.22KB
JAVA 实现上传功能.docx
《JAVA 实现上传功能.docx》由会员分享,可在线阅读,更多相关《JAVA 实现上传功能.docx(43页珍藏版)》请在冰豆网上搜索。
JAVA实现上传功能
上传Servlet的实现代码
1publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
2throwsServletException,IOException{
3
4Stringid=null;
5Afficheaffiche=newAffiche();//自定义的一个简单javabean
6booleanisMultipart=ServletFileUpload.isMultipartContent(request);//判断提交的表单是不是普通表单,不是的话就进行上传
7if(isMultipart){//不是普通表单的话就进行上传
8FileItemFactoryfactory=newDiskFileItemFactory();//固定用法,创建一个FileItemFactory对象
9ServletFileUploadupload=newServletFileUpload(factory);//固定用法,创建一个ServletFileUpload对象
10Iterator
11try{
12items=upload.parseRequest(request).iterator();//将表单数据全部赋值给items
13while(items.hasNext()){//while循环迭代items,得到所有的表单数据
14FileItemitem=items.next();
15if(!
item.isFormField()){//判断此表单数据是否是file类型没事的话就进行上传
16Stringname=item.getName();//得到file文件的名字
17StringfileName=name.substring(name.lastIndexOf('\\')+1,name.length());
18fileName=System.currentTimeMillis()+"_"+fileName;//生成保存file的文件名,利用当前时间的毫秒值加上源文件的后缀名
19Stringpath=request.getSession().getServletContext().getRealPath("upload")
20+File.separatorChar+fileName;//生成保存该文件的路径名
21System.out.println(path);
22FileuploadedFile=newFile(path);
23item.write(uploadedFile);//保存文件
24affiche.setAfFilepath(path);
25}else{//如果不是file类型的表单,那么就进行简单的赋值操作,注意这里不能再简单的用reqeuest.getParameter("")得到页面传递的表单数据,因为全部封装到items这个集合了
26if("id".equals(item.getFieldName())){//获取非上传参数
27id=item.getString("gb2312");
28}
29if("time".equals(item.getFieldName())){//获取非上传参数
30
31affiche.setAfEnabletime(parseDate(item.getString("gb2312")));
32}
33if("title".equals(item.getFieldName())){//获取非上传参数
34
35affiche.setAfTitle(item.getString("gb2312"));
36}
37if("content".equals(item.getFieldName())){//获取非上传参数
38
39affiche.setAfContent(item.getString("gb2312"));
40}
41}
42}
43}catch(Exceptione){
44e.printStackTrace();
45}
46}
47
48}
49
50//转换日期的小函数
51
52privateDateparseDate(Stringstr){
53SimpleDateFormatdd=newSimpleDateFormat("yyyy-MM-dd");
54Datedate=newDate();
55try{
56date=dd.parse(str);
57}catch(ParseExceptione){
58}
59returndate;
60}
JSP页面实现代码
1 act=save"method="post"enctype="multipart/form-data"> 2 3 4style="border: 1pxsolid#FF34B3"> 5 6 1pxsolid#FF34B3"> 7公告标题: 8 9 1pxsolid#FF34B3"> 10 11 12 13 14 1pxsolid#FF34B3"> 15公告内容: 16 17 1pxsolid#FF34B3"> 18 19
20
21 1pxsolid#FF34B3"> 22有效时间: 23 24 1pxsolid#FF34B3"> 25 26(YYYY-MM-DD) 27 28
29
30 1pxsolid#FF34B3"> 31相关文件: 32 33 1pxsolid#FF34B3"> 34 35 36
37
38 1pxsolid#FF34B3"> 39 40 history.go(-1)"value="返回"> 41 42
43
44
AfficheJavaBean实现代码:
1packagecom.wxl.po;
2
3importjava.util.Date;
4
5publicclassAffiche{
6privateintafId;
7privateStringdpId;
8privateStringafTitle;
9privateStringafContent;
10privateDateafTime;
11privateDateafEnabletime;
12privateStringafFilepath;
13
14//..一些get..set方法
15
16}
Servlet实现文件上传,可多文件上传
分类:
Jsp&Servlet2012-04-3019:
473192人阅读评论(7)收藏举报
一、Servlet实现文件上传,需要添加第三方提供的jar包
下载地址:
1)commons-fileupload-1.2.2-bin.zip:
点击打开链接
2)commons-io-2.3-bin.zip:
点击打开链接
接着把这两个jar包放到lib文件夹下:
二:
文件上传的表单提交方式必须是POST方式,
编码类型:
enctype="multipart/form-data",默认是application/x-www-form-urlencoded
比如:
三、举例:
1.fileupload.jsp
[html]viewplaincopyprint?
1.<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
2.<%
3.Stringpath=request.getContextPath();
4.StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
5.%>
6.
7.
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
--
20.
21.-->
22.
23.
24.
25.
26.
--enctype默认是application/x-www-form-urlencoded-->
27.
28.
29.用户名:
30.上传文件:
31.上传文件:
32.
33.
34.
35.
36.
37.
38.
39.
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
--
-->
--enctype默认是application/x-www-form-urlencoded-->
用户名:
上传文件:
上传文件:
2.实际处理文件上传的FileUpLoad.java
[java]viewplaincopyprint?
1.packagecom.servlet.fileupload;
2.
3.importjava.io.File;
4.importjava.io.*;
5.importjava.io.IOException;
6.importjava.io.PrintWriter;
7.importjava.util.List;
8.
9.importjavax.servlet.ServletException;
10.importjavax.servlet.http.HttpServlet;
11.importjavax.servlet.http.HttpServletRequest;
12.importjavax.servlet.http.HttpServletResponse;
13.
14.importmons.fileupload.FileItem;
15.importmons.fileupload.FileUploadException;
16.importmons.fileupload.disk.DiskFileItemFactory;
17.importmons.fileupload.servlet.ServletFileUpload;
18.
19./**
20.*
21.*@authorAdministrator
22.*文件上传
23.*具体步骤:
24.*1)获得磁盘文件条目工厂DiskFileItemFactory要导包
25.*2)利用request获取真实路径,供临时文件存储,和最终文件存储,这两个存储位置可不同,也可相同
26.*3)对DiskFileItemFactory对象设置一些属性
27.*4)高水平的API文件上传处理ServletFileUploadupload=newServletFileUpload(factory);
28.*目的是调用parseRequest(request)方法获得FileItem集合list,
29.*
30.*5)在FileItem对象中获取信息,遍历,判断表单提交过来的信息是否是普通文本信息另做处理
31.*6)
32.*第一种.用第三方提供的item.write(newFile(path,filename));直接写到磁盘上
33.*第二种.手动处理
34.*
35.*/
36.publicclassFileUpLoadextendsHttpServlet{
37.
38.publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
39.throwsServletException,IOException{
40.
41.request.setCharacterEncoding("utf-8");//设置编码
42.
43.//获得磁盘文件条目工厂
44.DiskFileItemFactoryfactory=newDiskFileItemFactory();
45.//获取文件需要上传到的路径
46.Stringpath=request.getRealPath("/upload");
47.
48.//如果没以下两行设置的话,上传大的文件会占用很多内存,
49.//设置暂时存放的存储室,这个存储室,可以和最终存储文件的目录不同
50./**
51.*原理它是先存到暂时存储室,然后在真正写到对应目录的硬盘上,
52.*按理来说当上传一个文件时,其实是上传了两份,第一个是以.tem格式的
53.*然后再将其真正写到对应目录的硬盘上
54.*/
55.factory.setRepository(newFile(path));
56.//设置缓存的大小,当上传文件的容量超过该缓存时,直接放到暂时存储室
57.factory.setSizeThreshold(1024*1024);
58.
59.//高水平的API文件上传处理
60.ServletFileUploadupload=newServletFileUpload(factory);
61.
62.
63.try{
64.//可以上传多个文件
65.List
66.
67.for(FileItemitem:
list)
68.{
69.//获取表单的属性名字
70.Stringname=item.getFieldName();
71.
72.//如果获取的表单信息是普通的文本信息
73.if(item.isFormField())
74.{
75.//获取用户具体输入的字符串,名字起得挺好,因为表单提交过来的是字符串类型的
76.Stringvalue=item.getString();
77.
78.request.setAttribute(name,value);
79.}
80.//对传入的非简单的字符串进行处理,比如说二进制的图片,电影这些
81.else
82.{
83./**
84.*以下三步,主要获取上传文件的名字
85.*/
86.//获取路径名
87.Stringvalue=item.getName();
88.//索引到最后一个反斜杠
89.intstart=value.lastIndexOf("\\");
90.//截取上传文件的字符串名字,加1是去掉反斜杠,
91.Stringfilename=value.substring(start+1);
92.
93.request.setAttribute(name,filename);
94.
95.//真正写到磁盘上
96.//它抛出的异常用exception捕捉
97.
98.//item.write(newFile(path,filename));//第三方提供的
99.
100.//手动写的
101.OutputStreamout=newFileOutputStream(newFile(path,filename));
102.
103.InputStreamin=item.getInputStream();
104.
105.intlength=0;
106.byte[]buf=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 实现上传功能 实现 上传 功能