读书人

JS实现上载文件

发布时间: 2013-01-22 10:23:54 作者: rapoo

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);


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>

读书人网 >JavaScript

热点推荐