FileUtils文件上传.docx

上传人:b****6 文档编号:6814251 上传时间:2023-01-10 格式:DOCX 页数:19 大小:20.78KB
下载 相关 举报
FileUtils文件上传.docx_第1页
第1页 / 共19页
FileUtils文件上传.docx_第2页
第2页 / 共19页
FileUtils文件上传.docx_第3页
第3页 / 共19页
FileUtils文件上传.docx_第4页
第4页 / 共19页
FileUtils文件上传.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

FileUtils文件上传.docx

《FileUtils文件上传.docx》由会员分享,可在线阅读,更多相关《FileUtils文件上传.docx(19页珍藏版)》请在冰豆网上搜索。

FileUtils文件上传.docx

FileUtils文件上传

一、单文件上传:

1:

struts.xml文件配置如下:

viewplaincopytoclipboardprint?

01.

xmlversion="1.0"encoding="UTF-8"?

>

02.

DOCTYPEstrutsPUBLIC

03."-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"

04."http:

//struts.apache.org/dtds/struts-2.0.dtd">

05.

06.

07.

08.

09.value="false"/>

10.

11.

12.

13.

14.

15.class="com.dingxun.upload.FileUploadAction"method="upload">

16.

17.

18.image/bmp,image/png,image/gif,image/jpeg,image/jpg

19.,image/x-png,image/pjpeg

20.

21.1048576

22.

23.

24./upload

25./resultUpload.jsp

26.

27.

28.

29.

---->

30.

31.

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEstrutsPUBLIC

"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"

"http:

//struts.apache.org/dtds/struts-2.0.dtd">

value="false"/>

class="com.dingxun.upload.FileUploadAction"method="upload">

image/bmp,image/png,image/gif,image/jpeg,image/jpg

image/x-png,image/pjpeg

1048576

/upload

/resultUpload.jsp

---->

备注1:

在action中添加/upload主要用来设定保存上传文件的路径,相对路径和绝对路径都可

备注2:

上面那个拦截器可要可不要,因为限制上传文件大小和类型在拦截器里配置不能起作用,要用常量配置如下面的限制文件大小的

上面的常量覆盖了default.properties里的设置

2:

FileUploadAction代码如下:

viewplaincopytoclipboardprint?

01.importjava.io.BufferedInputStream;

02.importjava.io.BufferedOutputStream;

03.importjava.io.File;

04.importjava.io.FileInputStream;

05.importjava.io.FileNotFoundException;

06.importjava.io.FileOutputStream;

07.importjava.io.IOException;

08.importjava.io.InputStream;

09.importjava.io.OutputStream;

10.

11.importmons.io.FileUtils;

12.importorg.apache.struts2.ServletActionContext;

13.

14.

15.publicclassFileUploadAction{

16.

17.privatefinalstaticintBUFFER_SIZE=16*1024;

18.privateFileupload;

19.privateStringuploadFileName;

20.privateStringuploadContentType;

21.privateStringtitle;

22.privateStringSavePath;

23.privateStringss;

24.

25.

26.publicStringgetSavePath(){

27.returnSavePath;

28.}

29.

30.publicvoidsetSavePath(StringsavePath){

31.SavePath=savePath;

32.}

33.

34.publicStringgetTitle(){

35.returntitle;

36.}

37.

38.publicvoidsetTitle(Stringtitle){

39.this.title=title;

40.}

41.

42.publicFilegetUpload(){

43.returnupload;

44.}

45.

46.publicvoidsetUpload(Fileupload){

47.this.upload=upload;

48.}

49.

50.publicStringgetUploadContentType(){

51.returnuploadContentType;

52.}

53.

54.publicvoidsetUploadContentType(StringuploadContentType){

55.this.uploadContentType=uploadContentType;

56.}

57.

58.publicStringgetUploadFileName(){

59.returnuploadFileName;

60.}

61.

62.publicvoidsetUploadFileName(StringuploadFileName){

63.this.uploadFileName=uploadFileName;

64.}

65.

66.

67.

68./*

69.*copy这个方法主要是用来实现文件上传的,实现的原理就是分别打开输入输出流,进行文件拷贝的

70.*/

71.privatevoidcopy(Filesrc,Filedist){

72.InputStreamin=null;

73.BufferedOutputStreamout=null;

74.

75.try{

76.in=newBufferedInputStream(newFileInputStream(src),BUFFER_SIZE);

77.out=newBufferedOutputStream(newFileOutputStream(dist),BUFFER_SIZE);

78.byte[]buffer=newbyte[BUFFER_SIZE];

79.intlen=0;

80.try{

81.while((len=in.read(buffer))>0){

82.out.write(buffer,0,len);

83.}

84.}catch(IOExceptione){

85.e.printStackTrace();

86.}

87.}catch(FileNotFoundExceptione){

88.e.printStackTrace();

89.}finally{

90.if(null!

=in){

91.try{

92.in.close();

93.}catch(IOExceptione){

94.e.printStackTrace();

95.}

96.}

97.if(null!

=out){

98.try{

99.out.close();

100.}catch(IOExceptione){

101.e.printStackTrace();

102.}

103.}

104.}

105.}

106.

107.

108.publicStringupload(){

109.StringdistPath=ServletActionContext.getServletContext().getRealPath(getSavePath())+"\\"+getUploadFileName();

110.System.out.println(distPath);

111.FiledisFile=newFile(distPath);

112.System.out.println("文件类型:

"+getUploadContentType());

113.//try{

114.//FileUtils.copyFile(upload,disFile);

115.//}catch(IOExceptione){

116.//e.printStackTrace();

117.//}

118.copy(upload,disFile);

119.return"success";

120.}

121.

122.}

importjava.io.BufferedInputStream;

importjava.io.BufferedOutputStream;

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.FileNotFoundException;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.OutputStream;

importmons.io.FileUtils;

importorg.apache.struts2.ServletActionContext;

publicclassFileUploadAction{

privatefinalstaticintBUFFER_SIZE=16*1024;

privateFileupload;

privateStringuploadFileName;

privateStringuploadContentType;

privateStringtitle;

privateStringSavePath;

privateStringss;

publicStringgetSavePath(){

returnSavePath;

}

publicvoidsetSavePath(StringsavePath){

SavePath=savePath;

}

publicStringgetTitle(){

returntitle;

}

publicvoidsetTitle(Stringtitle){

this.title=title;

}

publicFilegetUpload(){

returnupload;

}

publicvoidsetUpload(Fileupload){

this.upload=upload;

}

publicStringgetUploadContentType(){

returnuploadContentType;

}

publicvoidsetUploadContentType(StringuploadContentType){

this.uploadContentType=uploadContentType;

}

publicStringgetUploadFileName(){

returnuploadFileName;

}

publicvoidsetUploadFileName(StringuploadFileName){

this.uploadFileName=uploadFileName;

}

/*

*copy这个方法主要是用来实现文件上传的,实现的原理就是分别打开输入输出流,进行文件拷贝的

*/

privatevoidcopy(Filesrc,Filedist){

InputStreamin=null;

BufferedOutputStreamout=null;

try{

in=newBufferedInputStream(newFileInputStream(src),BUFFER_SIZE);

out=newBufferedOutputStream(newFileOutputStream(dist),BUFFER_SIZE);

byte[]buffer=newbyte[BUFFER_SIZE];

intlen=0;

try{

while((len=in.read(buffer))>0){

out.write(buffer,0,len);

}

}catch(IOExceptione){

e.printStackTrace();

}

}catch(FileNotFoundExceptione){

e.printStackTrace();

}finally{

if(null!

=in){

try{

in.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

if(null!

=out){

try{

out.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

}

}

publicStringupload(){

StringdistPath=ServletActionContext.getServletContext().getRealPath(getSavePath())+"\\"+getUploadFileName();

System.out.println(distPath);

FiledisFile=newFile(distPath);

System.out.println("文件类型:

"+getUploadContentType());

//try{

//FileUtils.copyFile(upload,disFile);

//}catch(IOExceptione){

//e.printStackTrace();

//}

copy(upload,disFile);

return"success";

}

}

备注:

1:

ServletActionContextcontext=ServletActionContext.getServletContext();

2:

ServletActionContext.getServletContext().getRealPath(getSavePath())得到上传文件目的文件夹的实际路径

3:

ServletActionContext.getServletContext().getRealPath(getSavePath())+"\\"+getUploadFileName()一个文件的实际路径,这个主要是用来建立输出流

如FiledisFile=newFile(distPath)

OutputStreamout=newBufferedOutputStream(newFileOutputStream(dist),BUFFER_SIZE);

4:

上传文件可以自己用io流拷贝文件,还可以用FileUtils.copyFile(file1,file2);

5:

File的名字要和上传页面File域name属性的值一致如:

upload则FileUploadAction中的File的名字也应为upload(privateFileupload),除此之外还要添加以下两个属性:

privateStringuploadFileName对应于上传文件的名字

privateStringuploadContentType对应于上传文件的类型

以上两个属性的名字的命名必需以File的属性名开头,然后再加上FileName或ContentType如uploadFileName和uploadContentType

3:

jsp页面如下:

viewplaincopytoclipboardprint?

01.<%@pagelanguage="java"contentType="text/html;charset=utf-8"

02.pageEncoding="utf-8"%>

03.

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

04.

05.

06.

07.struts2单文件上传页面

08.

09.

10.

11.标题:


12.请选选择:


13.

14.

15.

16.

<%@pagelanguage="java"contentType="text/html;charset=utf-8"

pageEncoding="utf-8"%>

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

struts2单文件上传页面

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1