📄 directoryaction.java
字号:
package com.gzrealmap.oa.actions;
/**
* <p>Title: 基本类库</p>
* <p>Description: 基本类库</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: 广州瑞图(gzrealmap.com)</p>
* @author charlse
* @version 1.0
*/
import javax.servlet.http.*;
import javax.servlet.*;
import java.sql.*;
import com.gzrealmap.lib.webupload.WebUpload;
import com.gzrealmap.lib.util.*;
import com.gzrealmap.lib.log.*;
import java.util.*;
import org.apache.commons.fileupload.*;
import com.gzrealmap.archive.actions.*;
public class DirectoryAction {
private DirectoryAction() {
}
private static Log log = Log.getInstance(DirectoryAction.class);
public static void downloadFile(HttpServletRequest request,
HttpServletResponse response) throws
Exception {
String FileID = request.getParameter("FileID");
String FileVersion = request.getParameter("FileVersion");
if (FileVersion != null) {
FileVersion = " AND FileVersion =" + FileVersion;
}
else {
FileVersion = " ";
}
com.gzrealmap.lib.jdbc.JDBCUtil db = com.gzrealmap.lib.jdbc.JDBCUtil.
getInstance();
db.connect();
String sql = "SELECT * FROM DirectoryFile WHERE FileID =" + FileID +
FileVersion +
" ORDER BY FileVersion DESC";
//log.info(sql);
PreparedStatement pst = db.getConnection().prepareStatement(sql);
ResultSet rs = pst.executeQuery();
rs.next();
String filename = rs.getString("FileName");
String filetype = rs.getString("FileType");
/**文件形式输出在服务器上**/
//java.io.FileOutputStream o = new java.io.FileOutputStream(new java.io.File("c://Result"));
byte[] b = rs.getBytes("FileBody");
/*
** 可能是rs.getBytes()返回时增加了结束符之类的符号,截去
*/
byte[] a = new byte[b.length];
System.arraycopy(b, 0, a, 0, b.length);
if (filetype != null) {
filetype = filetype.trim();
response.setContentType(filetype);
}
else {
response.setContentType("APPLICATION/OCTET-STREAM");
}
response.setHeader("Content-Disposition",
"attachment; filename=\"" + filename + "\"");
/* if Tomcat 4.1 update to new String (filename.getBytes("gb2312"),"ISO8859-1") */
ServletOutputStream o = response.getOutputStream();
o.write(a);
o.flush();
o.close();
db.disconnect();
}
public static void uploadFile(HttpServletRequest request, String userName) {
try {
upload(request, userName);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public static void upload(HttpServletRequest request, String userName) throws
Exception {
ActionsUtil.processRequest(request);
com.gzrealmap.lib.jdbc.JDBCUtil theJDBCUtil = com.gzrealmap.lib.jdbc.
JDBCUtil.
getInstance();
//传参部分
String theMenuID = null;
String theFileID = null;
theMenuID = request.getParameter("MenuID");
theFileID = request.getParameter("FileID");
// Variables
int count = 0;
int FileID = 0;
int MenuID = 0;
//用于版本的历史的记录;
int FileVersion = 0;
String FileAction = "";
WebUpload upload = WebUpload.getInstance(request);
//记录时间
count = upload.getFileCount();
String ArchiveNum = upload.getFieldValue("ArchiveNum");
String ArchiveDate = upload.getFieldValue("ArchiveDate");
String FileKey = upload.getFieldValue("FileKey");
String ArchiveFrom = upload.getFieldValue("ArchiveFrom");
String Charger = upload.getFieldValue("Charger");
String FileRemark = upload.getFieldValue("FileRemark");
String SerialNumber = upload.getFieldValue("SerialNumber");
// ArchiveNum = ActionUtils.iso2gbkNoNull(ArchiveNum);
// ArchiveDate = ActionUtils.iso2gbkNoNull(ArchiveDate);
// FileKey = ActionUtils.iso2gbkNoNull(FileKey);
// ArchiveFrom = ActionUtils.iso2gbkNoNull(ArchiveFrom);
// Charger = ActionUtils.iso2gbkNoNull(Charger);
// FileRemark = ActionUtils.iso2gbkNoNull(FileRemark);
// SerialNumber = ActionUtils.iso2gbkNoNull(SerialNumber);
ResultSet rs;
//连接数据库
try {
theJDBCUtil.connect();
theJDBCUtil.setAutoCommit(false);
if (theFileID == null) {
String sql1 = "SELECT * FROM DirectoryFile order by FileID";
//连接result,这里是为了找到一个FileID
rs = theJDBCUtil.queryforUpdate(sql1);
if (rs.last()) {
FileID = rs.getInt("FileID") + 1;
}
else {
FileID = 1;
}
//关闭result
rs.close();
FileVersion = 0;
FileAction = "创建";
if (theMenuID != null) {
MenuID = Integer.valueOf(theMenuID).intValue();
}
}
else { //这里是创建新的Version号
FileID = Integer.valueOf(theFileID).intValue();
String sql1 = "SELECT * FROM DirectoryFile where FileID =" + theFileID +
" order by FileVersion DESC";
rs = theJDBCUtil.queryforUpdate(sql1);
if (rs.next()) {
FileVersion = rs.getInt("FileVersion") + 1;
MenuID = rs.getInt("MenuID");
}
else {
FileVersion = 1;
MenuID = 1;
}
rs.close();
FileAction = "覆盖";
}
String sql = "SELECT * FROM DirectoryFile where 1=2"; //数据库操作
rs = theJDBCUtil.queryforUpdate(sql);
Enumeration enum = upload.getFileItems();
if (enum.hasMoreElements()) {
FileItem item = (FileItem) enum.nextElement();
if (item.getSize() > 0) {
String filename = item.getName();
filename = FileUtils.getFileName(filename);
String filetype = item.getContentType();
long filesize = item.getSize();
byte[] filebody = item.get();
//数据库操作从这里开始。
rs.moveToInsertRow(); //增加数据记录
rs.updateInt("FileID", FileID);
rs.updateInt("FileVersion", FileVersion);
rs.updateInt("MenuID", MenuID);
rs.updateString("UserName", userName);
rs.updateString("FileName", filename);
rs.updateLong("FileSize", filesize);
rs.updateTimestamp("UploadTime",
new Timestamp(new java.util.Date().getTime()));
rs.updateString("FileType", filetype);
rs.updateBytes("FileBody", filebody);
rs.updateString("FileRemark", FileRemark);
rs.updateString("FileAction", FileAction);
rs.updateString("ArchiveNum", ArchiveNum);
rs.updateString("ArchiveDate", ArchiveDate);
rs.updateString("FileKey", FileKey);
rs.updateString("ArchiveFrom", ArchiveFrom);
rs.updateString("Charger", Charger);
rs.updateString("SerialNumber", SerialNumber);
rs.insertRow();
rs.moveToCurrentRow();
}
}
theJDBCUtil.commit();
}
catch (Exception ex) {
log.error(ex);
theJDBCUtil.rollback();
}
theJDBCUtil.connect();
}
public static void main(String[] args) throws Exception {
sqlTest();
}
/**
* 用于测试数据库是否正常
*/
private static void sqlTest() throws Exception {
com.gzrealmap.lib.jdbc.JDBCUtil filedb = com.gzrealmap.lib.jdbc.JDBCUtil.
getInstance();
try {
filedb.connect();
Connection conn = filedb.getConnection();
filedb.setAutoCommit(false);
String sql = "SELECT * FROM DirectoryFile "; //数据库操作
Statement stmt = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(sql);
rs.moveToInsertRow(); // moves cursor to the insert row
rs.updateString("FileAction", "test");
rs.insertRow();
rs.moveToCurrentRow();
conn.commit();
}
catch (Exception ex) {
ex.printStackTrace();
filedb.rollback();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -