日期:2014-05-16  浏览次数:20455 次

JS实现下载文件?
用<a href = "文件地址" >下载</a>来做,系统总是默认打开该文件,而不是弹出下载框。
我也尝试在<a>标签加onclick事件,在事件中写window.location.href="文件地址"或者window.open("文件地址") 系统还是默认打开该文件,而不是弹出下载框。(注:下载文件格式不固定(.excel .word .pdf .ppt.............很多))
请各位大侠指点指点!有测试通过代码最好!

------解决方案--------------------
这个和js以及html无关。总是打开是因为你安装了打开这个东西所需的软件。这个应该是windows设置中的事情。具体怎么改我也不清楚。
------解决方案--------------------
js做不了。就算你设置浏览器,总不能别人的浏览器你也设置吧。
这是程序完成的,如asp的方法是这样。
<a href="down.asp?file=/xx/xx.doc" target="_blank">下载doc文档</a>
down.asp代码:
  <%
  Dim Scs,ture_url,filename,exe_name,Range,file_name,file_url
file_url=Request.QueryString("file")
ture_url=server.MapPath(file_url)
file_name=Mid(ture_url,instrRev(ture_url,"\")+1)
exe_name=Mid(file_name,instrRev(file_name,".")+1)'后缀名
If InStr("asp,pnp,aspx",LCase(exe_name))=0 Then '禁止下载一些程序文件
filename=Mid(file_name,1,instrRev(file_name,".")-1)'文件名
Set Scs=CreateObject("Adodb.Stream")
Scs.Mode=3 
Scs.Type=1 
Scs.Open 
Scs.LoadFromFile(ture_url)
Response.ContentType="application/octet-stream"
Response.AddHeader "Content-Disposition:","Attachment;filename="&Server.UrlEncode(filename)&"."&exe_name
Response.BinaryWrite(Scs.Read)
Else
Response.write "非法下载文件"
End If
  %>

------解决方案--------------------
Js做不下载文件的吧
------解决方案--------------------
参考

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page  contentType = " text/html; charset=utf-8" %> 
<%@ taglib uri = "/struts-tags"  prefix = "s" %>
<%@page import="java.util.*"%>
  <%@page import="java.io.*"%>
  <%@page import="java.net.*"%>
  <%
      String filename = "";
      String nofile ="";
      if(request.getParameter("nofile")!=null){
nofile = URLDecoder.decode(request.getParameter("nofile"),"UTF-8");
      }
      if (request.getParameter("file") != null) {
          filename = request.getParameter("file");
      }
      filename=URLDecoder.decode(filename,"UTF-8");
      String disp_file = request.getParameter("filename")!=null?
      URLEncoder.encode(filename.substring(filename.lastIndexOf("/")+1),"UTF-8"):URLEncoder.encode(request.getParameter("filename"),"UTF-8");
      System.out.println("disp_file---="+disp_file);
      filename=request.getRealPath("/")+filename;
      System.out.println("filename="+filename);
    File file = new File(filename);
    if(file.exists()){
      System.out.println("==filename="+filename);
      response.setContentType("application/msword");
      response.setHeader("content-disposition","attachment; filename="+disp_file);