吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 752|回复: 35
收起左侧

[其他原创] [代码]通过Cloudflare Workers实现webdav文件直链下载

[复制链接]
那年夏天52 发表于 2024-11-18 19:11
本帖最后由 那年夏天52 于 2024-11-18 19:25 编辑

有一个文件压缩包,我传到了一个webdav网盘,想供人下载,我不想用网盘网站提供的那个分享链接,想实现一个绑定自己域名的下载外链!
尽管有zpan、zfile、alist网盘挂载工具可以实现,但是我又不想额外增加服务器成本!而且这些大多都是能直接访问看到文件列表的!

于是我想到通过赛博大善人的workers实现!
实现的功能就是访问workers域名直接弹出下载框下载文件!
代码如下:

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  const url = 'webdav地址/文件夹名/文件名'; // WebDAV 服务器的文件地址
  const username = '账号'; // WebDAV 服务器的账号
  const password = '密码'; // WebDAV 服务器的密码

  // 使用 Base64 编码用户名和密码以进行基本身份验证
  const basicAuth = 'Basic ' + btoa(`${username}:${password}`);

  // 创建一个新的请求,带有正确的请求头以访问 WebDAV 服务器
  const webdavRequest = new Request(url, {
    method: 'GET',
    headers: {
      'Authorization': basicAuth // 添加身份验证头
    }
  });

  try {
    const response = await fetch(webdavRequest);

    if (!response.ok) {
      return new Response('从 WebDAV 服务器获取文件时出错', { status: response.status });
    }

    // 返回文件作为响应,并设置适当的头以支持文件下载
    return new Response(response.body, {
      headers: {
        'Content-Disposition': 'attachment; filename="下载时保存的文件名"', // 下载时保存的文件名
        'Content-Type': 'application/zip'   // 根据文件类型修改 Content-Type,例如 zip 文件
      }
    });
  } catch (error) {
    return new Response('错误: ' + error.message, { status: 500 }); // 捕获并返回错误信息
  }
}

免费评分

参与人数 3吾爱币 +5 热心值 +2 收起 理由
seatop + 1 + 1 谢谢@Thanks!
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
moch + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wudalang123 发表于 2024-11-19 21:19
seatop 发表于 2024-11-19 08:16
workers很好玩的样子,使用的是js吗

是的,Cloudflare Workers 使用的是 JavaScript(或更具体地说,是 TypeScript 或 JavaScript 的一个子集)。Cloudflare Workers 提供了一个运行时环境,允许开发者在 Cloudflare 的全球边缘网络中运行 JavaScript 代码,这意味着代码可以在距离用户更近的地方执行,从而实现快速和低延迟的网络应用。
 楼主| 那年夏天52 发表于 2024-11-20 13:32
zwjdujin 发表于 2024-11-20 08:30
单文件我成功了,那这岂不是一个二级域名下一个文件?我还以为是works地址展示webdav文件夹,然后可以自 ...

我这个原本的目的就是我有一个自己的软件提供给我的客户下载,而且我不想让别人公开的看到列表,如果你要展现出来列表,通过workers应该也可以做到,您可以进一步研究一下!

或者您如果愿意买一台服务器,可以试试alist等现成的工具来挂载!
jjsq 发表于 2024-11-18 19:49
似水流年小小 发表于 2024-11-18 19:51
给技术点赞,但是为了技术而技术? 意义呢
luoyang123 发表于 2024-11-18 19:59
厉害  学习到了
 楼主| 那年夏天52 发表于 2024-11-18 20:08
似水流年小小 发表于 2024-11-18 19:51
给技术点赞,但是为了技术而技术? 意义呢

并没有为了技术而技术的意思,这个的意义主要是实现一个比较直接的文件下载外链,没有多余广告也没有各种花里胡哨的页面渲染
leochang123 发表于 2024-11-18 20:10
谢谢大佬
moch 发表于 2024-11-18 21:14

原来是这样,学会了,很有用
sl3222112 发表于 2024-11-18 21:37
感谢分享
jinjin8644 发表于 2024-11-18 22:10
原来是这样,学会了,很有用
naore 发表于 2024-11-18 22:51

厉害  学习到了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 09:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表