JS实现下载文件? 这个和js以及html无关。总是打开是因为你安装了打开这个东西所需的软件。这个应该是windows设置中的事情。具体怎么改我也不清楚。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把这些供下载的文件都压缩成包试试 可以是.rar或者.zip 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 %> 参考<!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); BufferedInputStream bis = null; BufferedOutputStream bos = null; try { bis = new BufferedInputStream(new FileInputStream(filename)); bos = new BufferedOutputStream(response.getOutputStream()); byte[] buff = new byte[2048]; int bytesread; int i=0; while(-1 != (bytesread = bis.read(buff, 0, buff.length))) { bos.write(buff,0,bytesread); } bos.flush(); out.clear(); out=pageContext.pushBody(); // bos = pageContext.pushBody(); } catch(Exception e) { e.printStackTrace(); } finally { if (bis != null) bis.close(); if (bos != null) bos.close(); } }else{ if(!nofile.equals("")){ response.getWriter().write("<script>alert('"+nofile+"')</script>"); response.getWriter().write("<script>window.close();</script>"); }else{ response.getWriter().write("<script>alert('下载文件不存在')</script>"); response.getWriter().write("<script>window.close();</script>"); } } %><html><HEAD></HEAD><body><script>//window.close();</script></body></html> 楼上贴的是Java代码,我这是在Asp.Net中实现! /// <summary> /// 下载文件 /// </summary> /// <param name="path"></param> public void ResponseFile(string path) { string fileName = HttpContext.Current.Server.UrlEncode(path.Substring(path.LastIndexOf("/") + 1)); try { FileInfo info = new FileInfo(HttpContext.Current.Server.MapPath(path)); long fileSize = info.Length; Response.Clear(); Response.ContentType = "application/x-zip-compressed"; Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName); //不指明Content-Length用Flush的话不会显示下载进度 Response.AddHeader("Content-Length", fileSize.ToString()); Response.TransmitFile(path, 0, fileSize); Response.Flush(); Response.Close(); } catch (Exception ex) { Response.Write("无法下载文件:" + fileName + ",由于:" + ex.Message + ""); } }问题找到了,测试通过! 求解这个JS JS 多个checkbox判断是否选中问题 将正则表达式加转义字符转成js可用正则表达式 动态调用函数 我如何使用JavaScript实现日历功能? 在母版页的内容页中怎样使用javascript 控制文本框输入? 帮忙:单引双引嵌套的问题 look at js>>????!!!! help me JavaScript初级问题求教 iframe中src=x.htm 用js判断flash不能正常显示时 替换成图片
这是程序完成的,如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
%>
<%@ 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);
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(filename));
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesread;
int i=0;
while(-1 != (bytesread = bis.read(buff, 0, buff.length))) {
bos.write(buff,0,bytesread);
}
bos.flush();
out.clear();
out=pageContext.pushBody();
// bos = pageContext.pushBody();
} catch(Exception e) {
e.printStackTrace();
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
}
}else{
if(!nofile.equals("")){
response.getWriter().write("<script>alert('"+nofile+"')</script>");
response.getWriter().write("<script>window.close();</script>");
}else{
response.getWriter().write("<script>alert('下载文件不存在')</script>");
response.getWriter().write("<script>window.close();</script>");
}
}
%>
<html>
<HEAD></HEAD>
<body>
<script>
//window.close();
</script>
</body>
</html>
/// 下载文件
/// </summary>
/// <param name="path"></param>
public void ResponseFile(string path)
{
string fileName = HttpContext.Current.Server.UrlEncode(path.Substring(path.LastIndexOf("/") + 1));
try
{
FileInfo info = new FileInfo(HttpContext.Current.Server.MapPath(path));
long fileSize = info.Length;
Response.Clear();
Response.ContentType = "application/x-zip-compressed";
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
//不指明Content-Length用Flush的话不会显示下载进度
Response.AddHeader("Content-Length", fileSize.ToString());
Response.TransmitFile(path, 0, fileSize);
Response.Flush();
Response.Close();
}
catch (Exception ex)
{
Response.Write("无法下载文件:" + fileName + ",由于:" + ex.Message + "");
}
}
问题找到了,测试通过!