FileUtils文件上传Word文件下载.docx
《FileUtils文件上传Word文件下载.docx》由会员分享,可在线阅读,更多相关《FileUtils文件上传Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
packagename="
logsin"
extends="
struts-default"
13.
14.<
actionname="
upload"
15.class="
com.dingxun.upload.FileUploadAction"
method="
16.<
interceptor-refname="
fileUpload"
17.<
paramname="
allowedTypes"
18.image/bmp,image/png,image/gif,image/jpeg,image/jpg
19.,image/x-png,image/pjpeg
20.<
/param>
21.<
maximumSize"
1048576<
22.<
/interceptor-ref>
23.<
defaultStack"
<
24.<
SavePath"
/upload<
25.<
resultname="
success"
/resultUpload.jsp<
/result>
26.<
/action>
27.
28.<
/package>
29.<
--<
includefile="
example.xml"
/>
-->
30.
31.<
/struts>
DOCTYPEstrutsPUBLIC
"
<
value="
<
class="
<
<
image/bmp,image/png,image/gif,image/jpeg,image/jpg
image/x-png,image/pjpeg
备注1:
在action中添加<
主要用来设定保存上传文件的路径,相对路径和绝对路径都可
备注2:
上面那个拦截器可要可不要,因为限制上传文件大小和类型在拦截器里配置不能起作用,要用常量配置如下面的限制文件大小的
上面的常量覆盖了default.properties里的设置
2:
FileUploadAction代码如下:
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;
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"
;
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();
=out){
out.close();
}
publicStringupload(){
StringdistPath=ServletActionContext.getServletContext().getRealPath(getSavePath())+"
System.out.println(distPath);
FiledisFile=newFile(distPath);
System.out.println("
//try{
//FileUtils.copyFile(upload,disFile);
//}catch(IOExceptione){
//e.printStackTrace();
//}
copy(upload,disFile);
return"
}
备注:
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页面如下:
%@pagelanguage="
java"
contentType="
text/html;
charset=utf-8"
02.pageEncoding="
utf-8"
%>
03.<
DOCTYPEHTMLPUBLIC"
-//W3C//DTDHTML4.01Transitional//EN"
04.<
html>
05.<
head>
metahttp-equiv="
Content-Type"
content="
07.<
title>
struts2单文件上传页面<
/title>
08.<
/head>
09.<
body>
10.<
formaction="
upload.action"
post"
enctype="
multipart/form-data"
11.标题:
inputtype="
text"
name="
title"
br>
12.请选选择:
File"
13.<
submit"
提交"
14.<
/form>
15.<
/body>
16.<
/html>
pageEncoding="