网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 免费在线-站长教学 >> 站长教学 >> 网页制作 >> JSP编程技术 >> 文章正文
  简单介绍用JSP来实现文件下载功能的几种方式           ★★★ 【字体:
简单介绍用JSP来实现文件下载功能的几种方式
作者:佚名    文章来源:转自网页教学网    点击数:    更新时间:2007-8-2    

1.最直接最简单的,方式是把文件地址直接放到html页面的一个链接中。这样做的缺点是把文件在服务器上的路径暴露了,并且还无法对文件下载进行其它的控制(如权限)。这个就不写示例了。

2.在服务器端把文件转换成输出流,写入到response,以response把文件带到浏览器,由浏览器来提示用户是否愿意保存文件到本地。

3.既然是JSP的话,还有一种方式就是用Applet来实现文件的下载。不过客户首先得信任你的这个Applet小程序,由这个程序来接受由servlet发送来的数据流,并写入到本地。

Servlet端示例

public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType(" text/plain ");
OutputStream outputStream = null;
try {
outputStream = res.getOutputStream();
//把文件路径为srcFile的文件写入outputStream中
popFile(srcFile, outputStream)) ;
} catch (IOException e) {
e.printStackTrace();
}
}

JApplet端示例

URLConnection con;
try {
//url是被调用的SERVLET的网址 如 *.do
con = url.openConnection();
con.setUseCaches(false);
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestProperty("Content-Type",
"application/octet-stream");
InputStream in = con.getInputStream();
ProgressMonitorInputStream pmInputStream = new ProgressMonitorInputStream
(pane, "正在从服务器下载文件内容", in);
ProgressMonitor pMonitor = pmInputStream.getProgressMonitor();
pMonitor.setMillisToDecideToPopup(3);
pMonitor.setMillisToPopup(3);
//localfilepath本地路径,localstr文件文件夹,filename本地文件名
String localfilepath = localstr + filename ;
//方法saveFilsaveFilee是把输入流pmInputStream写到文件localfilepath中
if(saveFilsaveFilee(localfilepath,pmInputStream)){
     openLocalFile(localfilepath);
}

4.顺便把JApplet上传文件的代码也贴上来.

JApplet端示例

URLConnection con;
try {
con = url.openConnection();
//url是被调用的SERVLET的网址 如 *.do
   con.setUseCaches(false);
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestProperty("Content-Type","application/octet-stream");
OutputStream out = con.getOutputStream();
//localfilepath本地路径,localstr文件文件夹,filename本地文件名
String localfilepath = localstr + filename;
//文件getOutputStream是把文件localfilepath写到输出流out中
getOutputStream(localfilepath,out);
InputStream in = con.getInputStream();
return true;
}catch (IOException e) {
System.out.println("文件上传出错!");
e.printStackTrace();
}
servlet端代码示例
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType(" text/plain ");
InputStream inputStream = null;
try {
inputStream = res.getInputStream();
//把输入流inputStream保存到文件路径为srcFile的文件中
writefile(srcFile, inputStream);
} catch (IOException e) {
e.printStackTrace();
}
} // end service

总结:在文件的传输中是流的形式存在的,在硬盘上是文件的形式存在的。我们要做的只是通过HttpServletRequest和HttpServletResponse,或者是response和request来发送流和读取流。以及把文件转换成流或把流转换成文件的操作。

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    新手入门:简单介绍Hibernat
    AJAX学习基础:简单介绍数据
    新手入门:简单介绍JDK5.0中
    简单介绍Java实时应用程序中
    ASP入门知识:简单介绍ASP的
    新型标记语言 XHTML 简单介绍
    简单介绍用RMAN进行Oracle自
    简单介绍Oracle数据库去除别
    简单介绍:MS-SQL数据库开发
    简单介绍ASP中Cache技术的应
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    QQ交流群:22179824 联系我们:zhhhhb@yahoo.com ICP备案:冀ICP备06006290号 站长:免费在线