您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
通过右键菜单保存图片到WebDAV服务器
- // ==UserScript==
- // @name WebDAV Image Saver
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description 通过右键菜单保存图片到WebDAV服务器
- // @author YourName
- // @match *://*/*
- // @grant GM_xmlhttpRequest
- // @grant GM_registerMenuCommand
- // @grant GM_getValue
- // @grant GM_setValue
- // @grant GM_notification
- // @license MI
- // ==/UserScript==
- (function() {
- 'use strict';
- let lastImageSrc = null;
- // 监听右键菜单事件,记录最后选中的图片
- document.addEventListener('contextmenu', function(e) {
- const target = e.target;
- if (target.tagName === 'IMG' && target.src) {
- lastImageSrc = target.src;
- } else {
- lastImageSrc = null;
- }
- });
- // 注册(不可用)右键菜单命令
- GM_registerMenuCommand('保存图片到WebDAV', saveImageToWebDAV);
- GM_registerMenuCommand('配置WebDAV设置', configureWebDAV);
- // 配置WebDAV参数
- function configureWebDAV() {
- const webdavUrl = prompt('请输入WebDAV URL:', GM_getValue('webdavUrl', ''));
- const username = prompt('请输入用户名:', GM_getValue('username', ''));
- const password = prompt('请输入密码:', GM_getValue('password', ''));
- const savePath = prompt('请输入保存路径(以/结尾):', GM_getValue('savePath', '/'));
- if (webdavUrl && username && password) {
- GM_setValue('webdavUrl', webdavUrl);
- GM_setValue('username', username);
- GM_setValue('password', password);
- GM_setValue('savePath', savePath || '/');
- alert('配置已保存!');
- }
- }
- // 保存图片到WebDAV
- function saveImageToWebDAV() {
- if (!lastImageSrc) {
- alert('请先右键选中要保存的图片!');
- return;
- }
- const webdavUrl = GM_getValue('webdavUrl');
- const username = GM_getValue('username');
- const password = GM_getValue('password');
- const savePath = GM_getValue('savePath', '/');
- if (!webdavUrl || !username || !password) {
- alert('请先配置WebDAV参数!');
- return configureWebDAV();
- }
- // 获取文件名
- const fileName = lastImageSrc.split('/').pop().split('?')[0];
- const fullUrl = webdavUrl.replace(/\/$/, '') + savePath.replace(/\/$/, '') + '/' + fileName;
- // 下载图片
- GM_xmlhttpRequest({
- method: 'GET',
- url: lastImageSrc,
- responseType: 'blob',
- onload: function(response) {
- if (response.status !== 200) {
- return alert('图片下载失败!');
- }
- // 上传到WebDAV
- GM_xmlhttpRequest({
- method: 'PUT',
- url: fullUrl,
- headers: {
- 'Authorization': 'Basic ' + btoa(username + ':' + password)
- },
- data: response.response,
- onload: function(res) {
- if (res.status === 201 || res.status === 204) {
- GM_notification({
- text: '图片保存成功!',
- title: 'WebDAV上传',
- timeout: 3000
- });
- } else {
- alert(`上传失败:${res.status} ${res.statusText}`);
- }
- },
- onerror: function(err) {
- alert('网络请求失败,请检查配置!');
- console.error(err);
- }
- });
- },
- onerror: function(err) {
- alert('图片下载失败!');
- console.error(err);
- }
- });
- }
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址