超链接下载会暴露文件的真实位置 而且 只能下载存放在Web应用程序所在的目录下
我们可以利用程序编码实现下载 可以增加安全访问控制 对经过认证的用户提供下载 从任意位置提供下载的数据 可以将下载的文件存放在Web应用程序以外的目录中 也可以将文件保存到数据库中
利用程序下载 只要按照如下的方式设置三个报头域即可
- Content-Type:application/x-msdownload
- Content-Disposition:attachment;filaname=downloadfile
- Content-Length:filesize
浏览器在接收在上述的报头信息后 就会弹出文件下载的对话框 让你将文件保存到本地硬盘
1 index.jsp
- <%@ page contentType="text/html; charset=GBK" %>
- <%@ page import="javax.naming.*,java.sql.*,javax.sql.DataSource"%>
- <html>
- <head><title>index</title></head>
- <body>
- 点击下面的链接下载文件<p>
- <a href="download.jsp?id=111">tomcat6.exe</a><br>
- <%
- Context ctx=new InitialContext();
- DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/bookstore");
- Connection conn=ds.getConnection();
- Statement stmt=conn.createStatement();
- ResultSet rs=stmt.executeQuery("select id,filename from uploadfile");
- while(rs.next())
- {
- %>
- <a href="download.jsp?id=<%=rs.getInt(1)%>"><%=rs.getString(2) %></a><br>
- <%
- }
- %>
- </body>
- </html>
2 DownloadServlet.java
3 解决中文文件名问题
从硬盘盒数据库中存储的文件数据如果下载的文件名中有中文名 浏览器保存的文件名将显示乱码
对下载的文件面按照UTF-8进行编码
在servlet中增加一个静态的字符编码转换方法toUTF8String()
阅读(3273) | 评论(0) | 转发(0) |