zoukankan
html css js c++ java
JSP文件下载的实现
<%
@ page import
=
"
com.jstrd.htgl.common.Htglcommon
"
%>
<%
@ page import
=
"
java.net.*
"
%>
<%
String
mineType
=
"
text/plain
"
;
String
subject
=
request.getParameter(
"
subject
"
);
String
name
=
new
String
(request.getParameter(
"
name
"
).getBytes(
"
ISO8859-1
"
));
if
( subject !
=
null
)
{
Htglcommon bigText
=
new
Htglcommon();
byte
[] bts
=
bigText.selectText(subject,name);
if
( bts !
=
null
)
{
String
ext
=
bigText.docType;
if
( ext !
=
null
)
{
mineType
=
""
;
if
(
"
pdf
"
.equalsIgnoreCase(ext))
{
mineType
=
"
application/pdf
"
;
}
else
if
(
"
xls
"
.equalsIgnoreCase(ext))
{
mineType
=
"
application/vnd.ms-excel
"
;
}
else
if
(
"
doc
"
.equalsIgnoreCase(ext))
{
mineType
=
"
application/msword
"
;
}
else
if
(
"
gif
"
.equalsIgnoreCase(ext))
{
mineType
=
"
image/gif
"
;
}
else
if
(
"
jpg
"
.equalsIgnoreCase(ext))
{
mineType
=
"
image/jpeg
"
;
}
else
if
(
"
bmp
"
.equalsIgnoreCase(ext))
{
mineType
=
"
image/x-bmp
"
;
}
else
if
(
"
png
"
.equalsIgnoreCase(ext))
{
mineType
=
"
image/png
"
;
}
else
if
(
"
ppt
"
.equalsIgnoreCase(ext))
{
mineType
=
"
application/vnd.ms-powerpoint
"
;
}
else
if
(
"
txt
"
.equalsIgnoreCase(ext))
{
mineType
=
"
text/plain
"
;
}
else
if
(
"
zip
"
.equalsIgnoreCase(ext))
{
mineType
=
"
application/zip
"
;
}
else
if
(
"
rar
"
.equalsIgnoreCase(ext))
{
mineType
=
"
application/zip
"
;
}
if
( mineType.equals(
""
) )
{
mineType
=
application.getMimeType(
"
temp.
"
+
ext);
}
response.reset();
ServletOutputStream stream
=
response.getOutputStream();
//
response.addHeader(
"
Content-Disposition
"
,
"
attachment; filename=
"
+
URLEncoder.encode(bigText.docName,
"
gb2312
"
));
response.setContentType(mineType
+
"
; charset=gb2312
"
);
stream.write(bts);
stream.flush();
stream.close();
bts
=
null
;
}
}
}
%>
package
com.jstrd.htgl.common;
import
java.util.Calendar;
import
java.util.GregorianCalendar;
import
java.sql.Connection;
import
java.sql.PreparedStatement;
import
java.sql.ResultSet;
import
java.sql.SQLException;
import
com.exp.dao.DBConnection;
import
com.exp.dao.DBConnectionFactory;
import
com.exp.dao.EXPSQLException;
import
com.exp.dao.dialect.Dialect;
import
com.exp.dao.dialect.OracleDialect;
public
class
Htglcommon
{
public
transient
String docType
=
""
;
public
transient
String docName
=
""
;
public
Htglcommon()
{
}
/** */
/**
* 查询数据(正文)
*
*
@param
subject
* 数据对应主题
*
@return
如果数据不存在,则返回null
*
@throws
EXPSQLException
*/
public
byte
[] selectText(String subject,String strName)
throws
EXPSQLException
{
DBConnection dbConnection
=
this
.getDBConnection();
Connection con
=
dbConnection.getConnection();
PreparedStatement ps
=
null
;
ResultSet rs
=
null
;
String strString
=
""
;
try
{
Dialect dialect
=
dbConnection.getDialect();
if
(dialect
instanceof
OracleDialect)
{
ps
=
con.prepareStatement(
"
select file_body,file_name from sys_file f,flow_inst s where f.flow_inid=s.flow_inid and f.file_name=s.doc_name and f.flow_inid=? and f.file_name=?
"
);
ps.setString(
1
, subject);
ps.setString(
2
, strName);
rs
=
ps.executeQuery();
if
(rs.next())
{
byte
[] bts
=
rs.getBytes(
1
);
//
Blob blob = rs.getBytes(1);
strString
=
rs.getString(
2
);
this
.docName
=
strString;
this
.docType
=
strString.substring(strString.lastIndexOf(
"
.
"
)
+
1
);
//
byte[] bts = blob.getBytes((long) 1, (int) blob.length());
rs.close();
ps.close();
return
bts;
}
rs.close();
ps.close();
}
else
{
ps
=
con.prepareStatement(
"
select file_body,file_name from sys_file f,flow_inst s where f.flow_inid=s.flow_inid and f.file_name=s.doc_name and f.flow_inid=? and f.file_name=?
"
);
ps.setString(
1
, subject);
ps.setString(
2
, strName);
rs
=
ps.executeQuery();
if
(rs.next())
{
byte
[] bts
=
rs.getBytes(
1
);
strString
=
rs.getString(
2
);
this
.docName
=
strString;
this
.docType
=
strString.substring(strString.lastIndexOf(
"
.
"
)
+
1
);
rs.close();
ps.close();
return
bts;
}
rs.close();
ps.close();
}
return
null
;
}
catch
(SQLException sqlE)
{
throw
new
EXPSQLException(sqlE);
}
finally
{
dbConnection.close();
}
}
protected
DBConnection getDBConnection()
throws
EXPSQLException
{
return
DBConnectionFactory
.createDBConnection(
"
WorkFlow
"
);
}
}
查看全文
相关阅读:
多态的使用
抽象类与具体类
对象应该长什么样子
方法的重载overload
遵守合约:覆盖的规则
Android 自定义Dialog
less 之Extend 及 Extend all用法
github常见错误整理!
js获取元素宽高
解决 Error: Access denied for user 'root'@'localhost' (using password: YES)
原文地址:https://www.cnblogs.com/ding0910/p/646338.html
最新文章
sqlServer 查询特定的表(字段或者文字)在哪些存储过程中被使用
Aspose.Cell 生成带水印的excel文件
ajax回调打开新窗体被浏览器拦截
Find and kill the dead lock process
BulkCopy 之Transaction和dead lock
unreal slate 创建 window
dll的导入库(lib)输出路径
unreal 自定义 Slate Style Sets
QAbstractItemView::setRootIndex(const QModelIndex & index) 失效
Visual Studio(VS2012) Project&(Solution) 虚拟文件夹 & 物理文件夹
热门文章
区分debug和release生成文件的名称
Qt qmake 使用(含遗留问题)
Vs2012(Vs2013) 编译 64位 Qt (动态库), 并使用自编译Qt建立工程(悲催经历)。(含遗留问题)
游戏引擎架构 个人笔记 2.2.1-2.2.3章节
该用 QGraphicsView ? QtQuick-QML ?
SQL Server2005安装材料及教程编制
visual studio 2015更改兼容数据库版本
多态意味着很多形式
使用Object类型的多态引用是会付出代价的
非Animal呢?为何不写个万用类
Copyright © 2011-2022 走看看