关于调用下载,怎么调用浏览器下载修改文件名
GM_download下载时默认下载吗,看不到进度,调用了多少次都不知道,结果后面发现下载了一大堆。示范:https://rd-sycdn.kuwo.cn/c8376eaa3b09357dc36b6513393f5855/662c8c40/resource/m3/13/26/2683817674.mp4
请问怎么调用浏览器的下载,比如下载上面这个链接,直接在浏览器打开他会进入播放,而不会跳转到下载,想实现调用浏览器下载,并且自动改名为:一定要爱你.mp4,请问怎么调用。 本帖最后由 zip11 于 2024-4-27 15:45 编辑
> 本帖最后由 zip11 于 2024-4-27 15:44 编辑
必须是前台脚本,模拟 点击 链接,调用游览器自带下载器,
```
// ==UserScript==
// @name video-down-2
// @namespace https://bbs.tampermonkey.net.cn/
// @version 0.1.0
// @descriptiontry to take over the world!
// @author You
// @match https://bbs.tampermonkey.net.cn
// @grant GM_xmlhttpRequest
// @connect https://media.w3.org/*
// ==/UserScript==
(function() {
'use strict';
// Your code here...
// 定义下载文件函数
function downloadFile(url, fileName) {
// 发送 GM_xmlhttpRequest 请求
GM_xmlhttpRequest({
method: "GET",
url: url,
responseType: "blob", // 将响应类型设置为 blob
onload: function(response) {
// 创建 blob 对象
var blob = new Blob(, { type: response.response.type });
// 创建下载链接
var url = window.URL.createObjectURL(blob);
// 创建 a 标签并设置下载链接及文件名
var a = document.createElement("a");
a.href = url;
a.download = fileName;
// 模拟点击下载
a.click();
// 释放 blob 对象
window.URL.revokeObjectURL(url);
},
onprogress: function(event) {
// 获取下载进度信息
var percentComplete = (event.loaded / event.total) * 100;
console.log("下载进度:" + percentComplete.toFixed(2) + "%");
},
onerror: function(error) {
console.error('下载文件失败:', error);
}
});
}
// 调用下载文件函数并传入 URL 和自定义文件名
downloadFile('https://media.w3.org/2010/05/sintel/trailer.mp4', 'trailer.mp4');
})();
``` zip11 发表于 2024-4-27 15:22
> 本帖最后由 zip11 于 2024-4-27 15:44 编辑
必须是前台脚本,模拟 点击 链接,调用游览器自带下载 ...
还是不能下载呢,@connect也有啊
!(data/attachment/forum/202404/27/172022libxw5orwwkyaawd.jpg) 残情 发表于 2024-4-27 17:20
还是不能下载呢,@connect也有啊
看你的报错图片的英文说是 域名没有在 connect list,我用 脚本猫 可以正常下载,再试试 更换游览器 zip11 发表于 2024-4-27 15:22
> 本帖最后由 zip11 于 2024-4-27 15:44 编辑
必须是前台脚本,模拟 点击 链接,调用游览器自带下载 ...
不模拟点击也行,创建一个按钮点击,电击事件怎么写呢,默认浏览器下载,而且需要命名下载 本帖最后由 zip11 于 2024-4-27 21:00 编辑
点击事件,核心功能还是 模拟点击,只是调用方式不同
创建一个按钮点击,
默认浏览器下载,命名下载
```
// ==UserScript==
// @name Insert Button Example
// @namespace http://your.namespace.com
// @version 0.1
// @descriptionInsert a button into the page and simulate a download when clicked
// @author Your Name
// @match https://example.com/*
// @grant GM_xmlhttpRequest
// @connect bbs.tampermonkey.net.cn
// ==/UserScript==
(function() {
'use strict';
// 创建按钮元素
var button = document.createElement("button");
button.textContent = "点击下载";
// 将按钮插入到页面中
document.body.appendChild(button);
// 定义按钮点击事件处理函数
function handleClick(event) {
// 发送 GET 请求以模拟下载
GM_xmlhttpRequest({
method: "GET",
url: "https://example.com/download/file.zip",
responseType: "blob", // 设置响应类型为二进制数据
onload: function(response) {
// 创建临时链接并模拟点击下载
var url = URL.createObjectURL(response.response);
var a = document.createElement("a");
a.href = url;
a.download = "file.zip";
document.body.appendChild(a);
a.click();
// 下载完成后清除临时链接
URL.revokeObjectURL(url);
// 移除临时链接元素
document.body.removeChild(a);
}
});
}
// 将点击事件处理函数绑定到按钮的点击事件上
button.addEventListener("click", handleClick);
})();
``` zip11 发表于 2024-4-27 20:33
点击事件,核心功能还是 模拟点击,只是调用方式不同
创建一个按钮点击,
大佬,测试了,好像还是要下载完成了(缓存完成了)才会进入下载列表,和GM_DOWNLOAD一样,遇到大文件就不知道下载状态 而且好像还不能离开关闭页面
页:
[1]