OfdUpload.jsp
7.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="java.io.*" %>
<%@ page import="java.net.*,weaver.general.Util" %>
<%@ include file="/systeminfo/init_wev8.jsp" %>
<%@ page import="weaver.general.BaseBean" %>
<%@ page import="weaver.docs.docs.ImageFileIdUpdate" %>
<%@ page import="java.text.DateFormat" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload" %>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory" %>
<%@ page import="org.apache.commons.fileupload.FileItem" %>
<%@ page import="weaver.odoc.ofd.util.OFDCommonUtil" %>
<%@ page import="weaver.system.SystemComInfo" %>
<%@ page import="weaver.file.FileUpload" %>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItem" %>
<%@ page import="org.apache.commons.io.FileUtils" %>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="weaver.docs.docs.DocImageManager" %>
<%
new BaseBean().writeLog("UploadServlet ------ start ");
ImageFileIdUpdate imageFileIdUpdate = new ImageFileIdUpdate();
//接受上传的文件的大小4G
long MAX_FILE_SIZE = 4L * 1024 * 1024 * 1024;
//缓存大小1M
int BUFFER_SIZE = 1 *1024 * 1024;
DateFormat FORMAT = new SimpleDateFormat("yyyy-MM-dd");
User User = (User) request.getSession(true).getAttribute("weaver_user@bean");
new BaseBean().writeLog("UploadServlet ------ User " + User);
if (user == null) {
return ;
}
int docId= Util.getIntValue(request.getParameter("docId"),-1);
int imageFileId= Util.getIntValue(request.getParameter("imageFileId"),-1);
new BaseBean().writeLog("UploadServlet docId="+docId+"###imageFileId="+imageFileId);
//-------------------将上传文件保存到服务器中的files文件夹begin------------------
Writer writer = response.getWriter();
try
{
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
new BaseBean().writeLog("UploadServlet ------ isMultipart " + isMultipart);
if (!isMultipart)return;
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(BUFFER_SIZE);// max memory cache
// factory.setRepository(yourTempDirectory);
ServletFileUpload upload = new ServletFileUpload(factory);
java.security.ProtectionDomain pd = ServletFileUpload.class.getProtectionDomain();
new BaseBean().writeLog("UploadServlet ------ ServletFileUpload jar " + pd.getCodeSource().getLocation());
//upload.setFileSizeMax(MAX_FILE_SIZE);
String charset = request.getCharacterEncoding();
if (charset == null)
charset = "UTF-8";
upload.setHeaderEncoding(charset);
List<FileItem> items = upload.parseRequest(request);
if ((items == null) || items.isEmpty())
{
new BaseBean().writeLog("没有任何文件上传!");
return;
}
FileItem fi = null;
for (FileItem item : items)
{
if (!item.isFormField())
{
fi = item;
break;
}
}
String fileRealPath="";
long fsize=0;
if (fi != null)
{
String name = OFDCommonUtil.getUUID()+".ofd";
SystemComInfo syscominfo = new SystemComInfo() ;
String dir = FileUpload.getCreateDir(syscominfo.getFilesystem()) ;
fileRealPath=dir + File.separator + name;
File file = new File(dir + File.separator + name);
new BaseBean().writeLog("上传文件【"+ name + "】将保存到服务器位置" + dir );
if (fi instanceof DiskFileItem)
{// 可以快速处理
DiskFileItem dfi = (DiskFileItem)fi;
if (dfi.isInMemory())
{
byte[] b = dfi.get();
FileUtils.writeByteArrayToFile(file, b);
}
else
{
File in = dfi.getStoreLocation();
FileUtils.copyFile(in, file);
}
}
else
{// 默认方式
fi.write(file);
}
file.setLastModified(System.currentTimeMillis());
fsize=file.length();
writer.write(SystemEnv.getHtmlLabelName(18493, user.getLanguage()) + name + SystemEnv.getHtmlLabelName(25388, user.getLanguage()));
writer.flush();
}
else{
new BaseBean().writeLog("commons-fileupload- 1.3.1.jar未发现任何上传文件");
}
int new_id=0;
String new_imagefileName=null;
String new_docFileType=null;
String new_isextfile=null;
String new_hasUsedTemplet=null;
RecordSet rs=new RecordSet();
rs.executeSql("select id,imagefileName,docFileType,isextfile,hasUsedTemplet from DocImageFile where docId="+docId+" and imageFileId="+imageFileId);
if(rs.next()){
new_id= Util.getIntValue(rs.getString("id"),0);
new_imagefileName= Util.null2String(rs.getString("imagefileName"));
new_docFileType= Util.null2String(rs.getString("docFileType"));
new_isextfile= Util.null2String(rs.getString("isextfile"));
new_hasUsedTemplet= Util.null2String(rs.getString("hasUsedTemplet"));
}else{
new BaseBean().writeLog("UploadServlet_doPost DocImageFile is null");
}
int new_imageFileId=imageFileIdUpdate.getImageFileNewId();
char separator = Util.getSeparator() ;
String para = "" + new_imageFileId + separator + new_imagefileName
+ separator
+ "" + separator + "1" + separator
+ fileRealPath + separator
+ "0"+ separator + "0" + separator +fsize ;
//调用存储过程,插入此上传文件的相关内容到相关的表
rs.executeProc("ImageFile_Insert", para) ;
DocImageManager imgManger = new DocImageManager() ;
imgManger.resetParameter() ;
imgManger.setDocid(docId) ;
imgManger.setId(new_id) ;
imgManger.setImagefileid(new_imageFileId) ;
imgManger.setImagefilename(new_imagefileName);
imgManger.setDocfiletype(new_docFileType) ;
imgManger.setIsextfile(new_isextfile);
imgManger.setHasUsedTemplet(new_hasUsedTemplet);
imgManger.AddDocImageInfo() ;
}
catch(Exception e)
{
new BaseBean().writeLog("commons-fileupload- 1.3.1.jar中写出FileItem.write()发生异常");
response.sendError(500, e.getMessage());
}
//--------------------将上传文件保存到服务器中的files文件夹end------------------
//TODO 对于实际项目实施 ,上述begin和end间的逻辑 应自行实现。
%>