好友
阅读权限10
听众
最后登录1970-1-1
|
bhsmr
发表于 2023-9-27 17:17
本帖最后由 bhsmr 于 2023-10-14 05:42 编辑
OneDrive是微软提供的云存储服务,它可以方便地存储和分享文件。然而,OneDrive的文件分享链接默认是经过处理的,无法直接通过浏览器下载文件。写了一个单独的HTML文件,可以将OneDrive的文件分享链接转换为直接下载链接,实现文件的直接下载功能。而且,这个功能可以在本地双击直接运行,也可以通过将文件放到服务器上并通过域名访问。实现原理该功能的实现原理非常简单,通过JavaScript代码解析用户输入的OneDrive文件分享链接,提取关键信息,并根据提取的信息构造出直接下载链接。然后,将转换后的链接展示给用户,并提供复制功能,方便用户进行操作。
使用方法
在本地使用- 将HTML代码保存为一个名为onedrive.html的文件。
- 双击onedrive.html文件,它会在您默认的浏览器中打开。
- 在输入框中输入OneDrive文件的分享链接,然后点击”转换并复制链接”按钮。
- 转换后的直接下载链接将会在页面上显示出来。您可以点击链接进行下载,或者点击旁边的”复制”按钮将链接复制到剪贴板中。
通过服务器访问- 将HTML代码保存为一个名为onedrive.html的文件。
- 将onedrive.html文件上传到您的服务器上,确保可以通过域名访问到该文件。
- 在浏览器中输入http://域名/onedrive.html,将会打开转换工具页面。
- 输入OneDrive文件的分享链接,点击”转换并复制链接”按钮,即可获取直接下载链接。
使用以上方法,您可以在本地或通过服务器访问转换工具页面,方便地将OneDrive文件分享链接转换为直接下载链接。希望这个简单的OneDrive转直连工具能够帮助您更方便地下载OneDrive中的文件!
演示地址:https://onw.cc/onedrive.html
[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>OneDrive直链转换工具</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
h1 {
color: #333;
}
form {
margin-bottom: 20px;
}
label {
font-weight: bold;
}
input[type="text"],
textarea {
width: 100%;
padding: 5px;
margin-bottom: 10px;
box-sizing: border-box;
}
input[type="button"],
.copy-button,
#copy-all-button {
padding: 10px 20px;
background-color: #4CAF50;
color: #fff;
border: none;
cursor: pointer;
}
.result {
margin-top: 20px;
border: 1px solid #ccc;
padding: 10px;
background-color: #f9f9f9;
}
.error {
color: #f00;
}
</style>
</head>
<body>
<h1>OneDrive直链转换工具</h1>
<form>
<label for="urls">请输入OneDrive单文件分享链接(每行一个):</label><br>
<textarea id="urls" rows="5" cols="50" required></textarea><br>
<input type="button" value="转换">
</form>
<script>
// 在页面加载时设置输入框的提示文本
window.onload = function () {
var textarea = document.getElementById("urls");
textarea.placeholder = "支持格式:\n个人版onedrive:https://1drv.ms/i/s!AnDZHOpvo15********5Wo\n企业版onedrive:https://jkwl-my.sharepoint.com/:i:/g/personal/admin_***_com/EcqpkSG0KsFFgQ******KhgBICI_se3pMm***MPQ-0Q?e=kxarnf";
};
// 其他代码...
</script>
<div id="results"></div>
<button id="copy-all-button">复制全部</button>
<script>
function copyText(elementId) {
var element = document.getElementById(elementId);
var range = document.createRange();
range.selectNode(element);
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
document.execCommand("copy");
window.getSelection().removeAllRanges();
}
function copyAllLinks() {
var allLinks = document.querySelectorAll('.result span');
var allLinksText = [];
allLinks.forEach(function (link) {
allLinksText.push(link.textContent);
});
var allLinksTextString = allLinksText.join('\n');
var tempTextarea = document.createElement('textarea');
tempTextarea.value = allLinksTextString;
document.body.appendChild(tempTextarea);
tempTextarea.select();
document.execCommand('copy');
document.body.removeChild(tempTextarea);
alert('已复制全部链接到剪贴板!');
}
function convertAndCopy() {
var inputUrls = document.getElementById("urls").value;
var urlList = inputUrls.split("\n");
var resultDiv = document.getElementById("results");
resultDiv.innerHTML = "";
var convertedLinks = []; // 用于存储转换后的链接
urlList.forEach(function (url, index) {
url = url.trim();
if (url !== "") {
try {
var convertedLink = judgeLink(url);
var resultElement = document.createElement("div");
resultElement.className = "result";
resultElement.innerHTML = '<p><strong>原始链接:</strong><br>' + url + '</p>' +
'<p><strong>转换后链接:</strong><br><span id="result-link-' + index + '">' + convertedLink +
'</span> <button class="copy-button">复制</button></p>';
resultDiv.appendChild(resultElement);
convertedLinks.push(convertedLink); // 添加到转换后的链接数组
} catch (e) {
var errorElement = document.createElement("p");
errorElement.className = "error";
errorElement.textContent = "请检查链接是否正确?";
resultDiv.appendChild(errorElement);
}
}
});
// 自动复制转换后的链接
if (convertedLinks.length > 0) {
var convertedLinksText = convertedLinks.join('\n');
var tempTextarea = document.createElement('textarea');
tempTextarea.value = convertedLinksText;
document.body.appendChild(tempTextarea);
tempTextarea.select();
document.execCommand('copy');
document.body.removeChild(tempTextarea);
alert('已自动复制全部转换后链接到剪贴板!');
}
}
function judgeLink(url) {
if (url.startsWith("https://1drv.ms/")) {
// 如果是 https://1drv.ms/ 链接,则加上 https://onw.cc/1drv.ms?url=
return "https://onw.cc/1drv.ms?url=" + url;
}
var reg1 = /https:\/\/.+sharepoint\.com/;
var reg2 = /personal\/(\w+?)\//;
var reg3 = /.*\/(\S+)/;
var reg4 = /com\/:(\w):/;
var matches1 = url.match(reg1);
var matches2 = url.match(reg2);
var matches3 = url.match(reg3);
var p1 = matches1[0];
var p2 = matches2[1];
var p3 = matches3[1];
if (p3.includes('?')) {
p3 = p3.split('?')[0];
}
var matches4 = url.match(reg4);
if (matches4[1] === 'f') {
return "抱歉,你所输入链接分享的是文件夹,直链生成仅对单文件有效。";
}
return p1 + '/personal/' + p2 + '/_layouts/52/download.aspx?share=' + p3;
}
</script>
</body>
</html>
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|