如何用js实现点击按钮下载文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用js实现点击按钮下载文件相关的知识,希望对你有一定的参考价值。

在按钮上写属性 onclick="函数名()" ,作用是绑定click事件

<input type="button" onclick="Click()" value="Download" />

然后在脚本处写上对应的函数即可,在函数中跳转到相应的文件路径就行。如

function Click()
    window.location.href="文件的url地址";

追问

这还是打开文件的窗口要自己粘贴复制的,想要的效果是直接调用浏览器的下载窗口,选择本地路径,点击保存,这场景!要用creatObjectURL的貌似

追答

其实也是用浏览器打开,如果是浏览器不能打开的文件就会弹保存框(IE会提示你是要打开还是保存,选保存即可)

如果是固定只能下载不能打开,需要用第三方插件才行,window.URL.createObjectURL(文件对象)这个方法不一定所有浏览器都支持


附上你说的使用window.URL.createObjectURL方式,需要加这两行

var fileObj=document.getElementById("文件控件的id属性值");
var src = window.URL.createObjectURL(fileObj.files[0]);

此时src的值就是对应文件的url

追问

大牛啊!

追答

偶只是程序猿而已

参考技术A

使用javascript原生自带的click方法就行了。

<div id="go">用户登录</div>

以上就是源代码,我想用javascript
模拟点击”用户登录“按钮。

Javascript,一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的直译语言。它已经由欧洲电脑制造商协会通过ECMAScript实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器(Chrome、IE、FireFox等)支持。

JavaScript是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持I/O,比如网络、存储和图形等,但这些都可以由它的宿主环境提供支持。

JavaScript虽与Java有很多相似性,但这两门编程语言从设计之初就有很大的不同,JavaScript的语言设计主要受到了Self(一种基于原型的编程语言)和Scheme(一门函数式编程语言)的影响。在语法结构上它又与C语言有很多相似(例如if条件语句、while循环、switch语句、do-while循环等)。

参考技术B 如何用js实现点击按钮下载文件
在js中,可以给按钮绑定点击事件,当按钮被点击时,跳转至下载链接 ,实现文件的下载。下面小编举例讲解如何用js实现点击按钮下载文件。

东西/原料
html+js
代码编纂器:Dreamweaver CS5
方式/步调
1
新建一个html文件,定名为test.html,用于讲解若何用js实现点击按钮下载文件。

2
在test.html文件内,利用button标签建立一个按钮,按钮名称为“下载文件”。

3
在test.html文件内,给button按钮绑定onclick点击事务,当按钮被点击时,执行downfile()函数。

4
在js标签中,利用function建立downfile()函数,在函数内,用于实现下载的逻辑。

5
在downfile()函数内,经由过程window.location.href跳转至下载文件的链接,从而实现下载文件。

6
在浏览器打开test.html文件,查看实现的结果。
参考技术C

<a herf="要要下载文件的路径">点我下载


</a>

追问

button按钮,不用a标签,只有文件的url,要求调用浏览器的下载框

用js下载文件(需要后端链接)

      用js下载文件

PS:本文说的,并非如何用js创建流、创建文件、实现下载功能。

而是说的:你已知一个下载文件的后端接口,前端如何请求该接口,实现点击按钮、下载文件到本地。(可以是zip啦、excel啦都是一样)

 

有两个方法:window.open()和通过form表单来提交。

在线例子:https://hamupp.github.io/gitblog/app/jsBasic/jsButtonDownloadFile/index.html

方法一:window.open("下载文件的后端接口");

*html结构*

<button type="button" id="btn1">下载一个zip(方法1)</button>
<button type="button" id="btn2">下载一个zip(方法2)</button>

/*js部分*/

技术分享图片
var $eleBtn1 = $("#btn1");
        var $eleBtn2 = $("#btn2");

        //已知一个下载文件的后端接口:https://codeload.github.com/douban/douban-client/legacy.zip/master
        //方法一:window.open()
        $eleBtn1.click(function(){
            window.open("https://codeload.github.com/douban/douban-client/legacy.zip/master");
        });
技术分享图片

然而有个问题:浏览器会打开一个新窗口,然后迅速自动关闭,体验非常不好。

方法二:通过form提交

由于ajax函数的返回类型只有xml、text、json、html等类型,没有“流”类型,所以通过ajax去请求该接口是无法下载文件的,所以我们创建一个新的form元素来请求接口。

/*js部分*/

技术分享图片
//方法二:通过form
        $eleBtn2.click(function(){
            var $eleForm = $("<form method=‘get‘></form>");

            $eleForm.attr("action","https://codeload.github.com/douban/douban-client/legacy.zip/master");

            $(document.body).append($eleForm);

            //提交表单,实现下载
            $eleForm.submit();
        });
技术分享图片

以上是关于如何用js实现点击按钮下载文件的主要内容,如果未能解决你的问题,请参考以下文章

JS实现点击按钮,下载文件

如何用JS实现一行一行读取一个TXT文件?

如何用html实现点击一个链接,弹出一个下载的对话框,即有保存,运行,打开啥的

用js下载文件(需要后端链接)

如何用python模拟点击onclick

如何用JS或JQ实现点击不同的按钮出现不同的层内容