我想在jsp里面把一个已知路径的excel文件下载下来。就是在jsp里面有个按钮“下载”,点击后会弹出另存为对话框,选择路径后就可以吧这个excel文件下到指定位置,怎么实现啊。
------解决方案--------------------
后台写一个通过迭代文件夹和文件生成树的东西,选择下载的时候弹出对话框,展示这个树给他,让他选择。选择后通过选择的节点,读取相应的文件给他。这个就靠你自己去写了
------解决方案--------------------
按钮下载?
<button onclick="download();" value="下载"/>
<script type="text/javascript">
function download() {
window.location.href = "你的文件下载地址";
}
</script>
好像这样子就行了吧.
------解决方案--------------------
等待高手解决问题 我也遇到了同样的问题!
------解决方案--------------------
<a href="你的文件路径">下载</a> 这样就行
------解决方案--------------------
写个servlet或者action之类的类, 前台点击下载按钮访问服务器这个类, 类里面通过File file = new File(文件的绝对路径);生成一个file对象, 然后通过FileInputStream fis = new FileInputStream(fiile);生成输入流.然后通过response的getOutputStream()对象将输入流返回给客户. 在返回前需要设置一下返回的头什么的.
//设置返回值类型, excel文件类型
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Pragma", "public");
response.addHeader("Content-Disposition", "attachment;filename=\"" + new String(file.getFileName().getBytes("UTF8"), "iso-8859-1")+"\"");
我项目里面用的是utf8编码. 所以编码部分你可以修改为你所用的编码格式.
注意responsesetCntentType这几行代码要放在response.getOutputStream()代码之前调用. 否则会报错或者无效果.
------解决方案--------------------
像这种下载,文件名不能是中文,并且必须放在项目下面,
你也可以在servlet中用流的形式返回文件,这样的话可以下中文名的文件,也不用放在项目下
------解决方案--------------------
//servlet代码
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FileDown extends HttpServlet {
public FileDown() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.addHeader("Content-Disposition", "attachment;filename="
+ new String("送.txt".getBytes("GBK"),"ISO8859_1"));
response.setContentType("text/html");
PrintWriter out = response.getWriter();
FileInputStream in = null;
File f = new File("C:\\送.txt");
try {
in = new FileInputStream(f);
byte b[] = new byte[1024];
while (in.read(b, 0, 1024) != -1) {
out.write(new String(b, "ISO8859_1"));
}
in.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.flush();
out.close();
}
public void init() throws ServletException {
}
}
------解决方案--------------------
//web.xml
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>FileDown</servlet-name>
<servlet-class>FileDown</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileDown</servlet-name>
<url-pattern>/servlet/FileDown</url-pattern>
</servlet-mapping>
------解决方案--------------------
你可以Google一下FileUpload相关的文章,网上都有很详细的解答的。
------解决方案--------------------
个人认为超链接不可靠
现在的情况是只要能拿到文件的路径,即便是从客户端下载服务器上的文件,
只要文件存在,就能下载,数据库一般都会存在文件上传的地址的,你只需要拿到就行了
拿到文件地址,直接把文件地址传到jsp页面,jsp页面如下
<body>
<%
String path="";
if(request.getAttribute("filedownPath")!=null){