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
"
);
}
}
查看全文
相关阅读:
autoLayout适配
iOS FMDB 无法更新二进制数据的问题
iOS 数据库操作崩溃提示“ int rc = sqlite3_step([_statement statement]);”或者提示“ rc = sqlite3_step(pStmt);”
iOS点击cell时,控件背景色消失的解决方法
UISegmentedControl 的使用
自定义cell侧滑删除
iOS设置cell选中时文字颜色的变化
iOS 如何在Label中显示html的文本
iOS 单例的销毁
类似微信聊天界面加载历史记录的样式
原文地址:https://www.cnblogs.com/ding0910/p/646338.html
最新文章
Java String字符串补0或空格
ios客户端浏览器样式加载失效问题
Cannot create __weak reference in file using manual reference counting
安卓AES加密
软件工程学习进度第十周汇总
软件工程学习进度第九周暨暑假学习进度之第九周汇总
软件工程学习进度第八周暨暑期学习进度之第八周汇总
软件工程学习进度第七周暨暑期学习进度之第七周汇总
软件工程学习进度第六周暨暑期学习进度之第六周汇总
软件工程相关书目之《大道至简》读后感
热门文章
软件工程学习进度第三周暨暑期学习进度之第三周汇总
afnetwork使用
键盘遮盖问题
iOS 选择本地图片
git代码库
bug调试
智能社javascript
swift中文版和网站
图文混编
23设计模式
Copyright © 2011-2022 走看看