EXTJS配合Struts2的图片上传可预览例子代码Word格式.docx
《EXTJS配合Struts2的图片上传可预览例子代码Word格式.docx》由会员分享,可在线阅读,更多相关《EXTJS配合Struts2的图片上传可预览例子代码Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
ServletResponseAware
{
15.
private
static
final
long
serialVersionUID
=
-1513311332990213727L;
16.
17.
protected
HttpServletResponse
response;
18.
19.
HttpServletRequest
request;
20.
21.
public
void
setServletRequest(HttpServletRequest
request)
22.
this.request
23.
}
24.
25.
setServletResponse(HttpServletResponse
response)
26.
this.response
27.
28.
29.
Account
getUser(HttpServletRequest
request){
30.
return
(Account)request.getSession().getAttribute("
user"
);
31.
32.
33.
setUser(HttpServletRequest
request,
account){
34.
request.getSession().setAttribute("
account);
35.
36.
37.
destroyUser(HttpServletRequest
38.
request.getSession().removeAttribute("
39.
40.
41.}
package.ajaxbear.action;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.apache.struts2.interceptor.ServletRequestAware;
importorg.apache.struts2.interceptor.ServletResponseAware;
import.ajaxbear.vo.Account;
importcom.opensymphony.xwork2.ActionSupport;
publicclassBaseActionextendsActionSupportimplementsServletRequestAware,
ServletResponseAware{
privatestaticfinallongserialVersionUID=-1513311332990213727L;
protectedHttpServletResponseresponse;
protectedHttpServletRequestrequest;
publicvoidsetServletRequest(HttpServletRequestrequest){
this.request=request;
}
publicvoidsetServletResponse(HttpServletResponseresponse){
this.response=response;
protectedAccountgetUser(HttpServletRequestrequest){
return(Account)request.getSession().getAttribute("
protectedvoidsetUser(HttpServletRequestrequest,Accountaccount){
request.getSession().setAttribute("
account);
protectedvoiddestroyUser(HttpServletRequestrequest){
request.getSession().removeAttribute("
}
然后我们新建一个Action,名字为UploadAction:
java.io.File;
java.io.FileInputStream;
5.import
java.io.FileOutputStream;
java.util.UUID;
7.
8.import
org.apache.struts2.ServletActionContext;
9.
10.import
.ajaxbear.util.XResponse;
11.
12.public
UploadAction
13.
File
upload;
String
uploadContentType;
getUpload()
setUpload(File
upload)
this.upload
getUploadContentType()
setUploadContentType(String
uploadContentType)
this.uploadContentType
getUploadFileName()
uploadFileName;
setUploadFileName(String
uploadFileName)
this.uploadFileName
//
上传文件的文件名
41.
42.
43.
getFileExp(String
name){
44.
int
pos
name.lastIndexOf("
."
45.
46.
name.substring(pos);
47.
48.
49.
@Override
50.
execute()
throws
Exception
51.
//首先判断用户是否曾经上传过,如果上传过,则删掉原来的文件(这里我没考虑其他情况,考虑周全还要写一些代码)
52.
oldImageName
request.getParameter("
oldImageName"
53.
//如果存在则删除
54.
if
(!
"
noImage"
.equalsIgnoreCase(oldImageName))
55.
oldFile
new
File(ServletActionContext
56.
.getServletContext().getRealPath("
/"
)
57.
+
UploadImages"
File.separator+oldImageName);
58.
oldFile.delete();
59.
60.
System.out.println(oldImageName);
61.
//为用户新上传的图片新取一个名字
62.
newName
UUID.randomUUID().toString();
63.
//获取用户上传的图片格式
64.
exp
getFileExp(uploadFileName);
65.
//将文件写入文件夹
66.
FileOutputStream
fos
FileOutputStream(ServletActionContext
67.
68.
File.separator
newName+exp);
69.
FileInputStream
fis
FileInputStream(upload);
70.
byte[]
buffer
byte[10240];
71.
len
0;
72.
total
fis.available();
73.
System.out.println("
文件大小为:
+total);
74.
while
((len
fis.read(buffer))
>
0)
75.
fos.write(buffer,
0,
len);
76.
fos.flush();
77.
78.
fis.close();
79.
fos.close();
80.
//返回图片名称(路径我是在前台写死了的),注意返回的contentType不能是text/json;
81.
XResponse.sendMSG(response,
{success
:
true,msg:
'
+newName+exp+"
}"
"
text/html;
charset=utf-8"
82.
NONE;
83.
84.}
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.util.UUID;
importorg.apache.struts2.ServletActionContext;
import.ajaxbear.util.XResponse;
publicclassUploadActionextendsBaseAction{
privateFileupload;
privateStringuploadContentType;
publicFilegetUpload(){
returnupload;
publicvoidsetUpload(Fileupload){
this.upload=upload;
publicStringgetUploadContentType(){
returnuploadContentType;
publicvoidsetUploadContentType(StringuploadContentType){
this.uploadContentType=uploadContentType;
publicStringgetUploadFileName(){
returnuploadFileName;
publicvoidsetUploadFileName(StringuploadFileName){
this.uploadFileName=uploadFileName;
//上传文件的文件名
privateStringuploadFileName;
privateStringgetFileExp(Stringname){
intpos=name.lastIndexOf("
returnname.substring(pos);
@Override
publicStringexecute()throwsException{
//首先判断用户是否曾经上传过,如果上传过,则删掉原来的文件(这里我没考虑其他情况,考虑周全还要写一些代码)
StringoldImageName=request.getParameter("
//如果存在则删除
if(!
.equalsIgnoreCase(oldImageName)){
FileoldFile=newFile(ServletActionContext
.getServletContext().getRealPath("
)
+"
+File.separator+oldImageName);
oldFile.delete();
}
System.out.println(oldImageName);
//为用户新上传的图片新取一个名字
StringnewName=UUID.randomUUID().toString();
//获取用户上传的图片格式
Stringexp=getFileExp(uploadFileName);
//将文件写入文件夹
FileOutputStreamfos=newFileOutputStream(ServletActionContext
+File.separator+newName+exp);
FileInputStreamfis=newFileInputStream(upload);
byte[]buffer=newbyte[10240];
intlen=0;
inttotal=fis.available();
System.out.println("
while((len=fis.read(buffer))>
0){
fos.write(buffer,0,len);
fos.flush();
fis.close();
fos.close();
//返回图片名称(路径我是在前台写死了的),注意返回的contentType不能是text/json;
XResponse.sendMSG(response,"
{success:
true,msg:
charset=utf-8"
returnNONE;
XResponse的代码:
.ajaxbear.util;
java.io.IOException;
4.
6.
mons.logging.Log;
mons.logging.LogFactory;
10.public
XResponse
XResponse()
Log
log
LogFactory.getLog(XResponse.class);
sendMSG(HttpServletResponse
response,
Object
jsonData,
String...
strings)
(strings.length
!
response.setContentType(strings[0]);
}else{
response.setContentType("
text/json;
try
log.debug("
<
-----JSON:
jsonData.toString());
response.getWriter().write(jsonData.toString());
response.getWriter().flush();
}
catch
(IOException
e)
log.error(e.getMessage());
e.printStackTrace();
};
32.}
package.ajaxbear.util;
importjava.io.IOException;
importmons.logging.Log;
importmons.logging.LogFactory;
publicclassXResponse{
publicXResponse(){
protectedstaticfinalLoglog=LogFactory.getLog(XResponse.class