javaweb文件下载 部署到服务器文件下载有问题

最近做了一个网站,有关检索的一个系统,里边涉及到了文件的下载和查看(pdf文件),遇到了一些问题,现在和大家分享一下我解决的办法:

文件下载总的来说有两种方式(我认为的啊,别当真),

一种是通过超链接的方式:<a href="<%=basePath%>/download/文件名称">下载</a>   这种方式就可以下载根路径下的download下的文件了,

但是这种下载只能下载 .rar文件,当下载pdf或者图片的时候,他就不打开那个文件,所以这种方式一般用于实现查看全文或者预览全文的功能。

第二种就是使用后台代码的方式了,这种方式首先要请求到后台,我就以ssh框架为例,演示一下:

首先是页面上的代码,我就用了一个超链接

<a href="download!downloadFile.action?fileName=要下载的文件名">下载</a>

之后是后台代码

public String downloadFile() {

String fileName = ServletActionContext.getRequest().getParameter("fileName");  //获取前台传过来的文件名
HttpServletRequest request = ServletActionContext.getRequest(); //获取request对象
HttpServletResponse response=ServletActionContext.getResponse(); //获取response对象
response.setHeader("Content-Disposition", "attachment;filename="+fileName);  //
String fullFileName=request.getSession().getServletContext().getRealPath("") +"\\download\\"+fileName;

try{
InputStream in = new FileInputStream(fullFileName);
OutputStream out = response.getOutputStream();

//写文件
int b;
while((b=in.read())!= -1)
{
out.write(b);
}

in.close();
out.close();
}
catch(Exception e){

}

return "rdate";  //
}
这样就可以实现文件的下载了(可以下载根路径下的download下的文件了),在Windows里完全没问题(我亲自试过的)

------------------------------------------------------------------------------------------------------------------------------------------------

之后我就开开心心的把这个项目部署到服务器上去了测试了(Linux系统),那么问题来了,在服务器上的项目居然不能下载,郁闷了,之后开始寻找解决办法,

最后发现问题了,原来Linux系统的目录是xxx/xxx/xxx的格式 而Windows下是xxx\xxx\xxx的格式,所以要部署到Linux系统下这个程序还得修改一下,把

String fullFileName=request.getSession().getServletContext().getRealPath("") +"\\download\\"+fileName;这句话的 \\ 换成/ 就可以了

String fullFileName=request.getSession().getServletContext().getRealPath("") +"/download/"+fileName;

好了,完成了,有什么不对的地方欢迎大家指出来,大家一起学习

也可加本人qq:212966054

时间: 2024-11-10 07:40:10

javaweb文件下载 部署到服务器文件下载有问题的相关文章

将javaweb项目部署到服务器中

1. 基于maven构建的javaweb项目 使用maven进行对项目进行打成war包的形式 然后把war包使用文件传输工具传输到服务器Tomcat中的webapps目录下. 重启Tomcat,tomcat会自动解压项目,然后访问公网IP+端口号,可以使用Manager App目录来管理你的项目 访问Manager App需要配置Tomcat/conf/tomcat.users.xml <tomcat-users xmlns="http://tomcat.apache.org/xml&qu

Java笔记---部署 JavaWeb 项目到云服务器

一.前言 前面我们已经尝过了在云服务器上部署代码的甜头了,现在主菜就要上场了,那就是将我们的 JavaWeb 项目部署到云服务器上.兴奋吧?淡定淡定~ 二.项目部署 我们对于 Java Web 项目在本地机器(无论是 Windows 还是 Linux)上的部署已经了然于心了,那么对于在云服务器上部署 Java Web 项目又是如何操作的呢? 其实很简单,还是离不开 Web 项目部署的那三点: ① 基础的 JDK 环境 ② 一个 Web 服务器.如 Tomcat.JBoss ③ 一款数据库.如:m

基于Windows Server 2012 R2部署KMS服务器

基于Windows Server 2012 R2部署KMS服务器 关于Microsoft Windows / Microsoft Office "VLK" 和"MAK"两种激活的异同 "VLK"和"MAK"都是微软为"大客户"量身特定的激活方式.只要实施激活,就是永久激活."VLK"是Volume Licensing Key的缩写.微软对于"VLK"密钥施行"

JBPM(四)——把流程部署到服务器上

当我们的业务流程被设计开发完毕之后,会有许多相关的文件"散落"在工程中,其中包括: 定义流程的JPDL文件 根据图形化流程定义同步生成的流程图片文件(PNG格式) 业务流程中用于人机交互的表单页面文件 事件监听器等用户自定义代码的Java类文件 其他流程资源文件,例如小图标.css样式表.脚本文件.属性文件等 jbpm4支持将流程定义及其相关资源打包一个JAR(Java归档)格式的文件,部署到服务器上(其实就是服务所连接的JBPM数据库中),然后流程定义就可以被执行了. 一.如何将流程

Skype for Business Server 2015系列(三)部署前端服务器-3

1.创建Skype 拓扑 打开"Skype for Business Server 2015 拓扑生成器" 在 拓扑生成器中,选择"新建拓扑".根据提示输入位置和文件名以保存拓扑.为拓扑文件提供一个的名称,单击[确定],并保持文件的后缀扩展名不变(tbxml). 在"定义主域"页上,为组织输入主 SIP 域的名称,然后单击[下一步]. 在"指定其他支持域"页上,输入其他域的名称(如果有),然后单击[下一步]. 在"定

centos 6.2 部署pptp服务器

一.系统环境说明 [[email protected] ~]# uname -a Linux cdit-00007b48 2.6.32-220.17.1.el6.x86_64 #1 SMP Wed May 16 00:01:37 BST 2012 x86_64 x86_64 x86_64 GNU/Linux [[email protected] ~]# cat /etc/issue CentOS release 6.2 (Final)Kernel \r on an \m 二.系统环境检查,查看是

CentOS 6.5下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器

一.简介 LogAnalyzer 是一款syslog日志和其他网络事件数据的Web前端.它提供了对日志的简单浏览.搜索.基本分析和一些图表报告的功能.数据可以从数据库或一般的syslog文本文件中获取,所以LogAnalyzer不需要改变现有的记录架构.基于当前的日志数据,它可以处理syslog日志消息,Windows事件日志记录,支持故障排除,使用户能够快速查找日志数据中看出问题的解决方案. LogAnalyzer 获取客户端日志会有两种保存模式,一种是直接读取客户端/var/log/目录下的

maven指定部署的服务器类型

<!-- 指定部署的服务器类型 --> <plugins> <!-- <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat6-maven-plugin</artifactId> <version>2.2</version> </plugin> --> <plugin> <

将网站部署到服务器上出现_STORAGE_WRITE_ERROR_问题

用的thinkphp3.2的框架,在本地运行没有问题,部署到服务器上(基于centos的LAMP环境)即报错,报错信息如下(完全看不懂...):求大神帮帮忙~~~~(>_<)~~~~ :(_STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Home/f8995a0e1afcdadc637612fae5a3b585.php错误位置FILE: /var/www/html/shoppingback/ThinkPHP/Library/Think/Stor