本帖最后由 那年夏天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地址/文件夹名/文件名';
const username = '账号';
const password = '密码';
const basicAuth = 'Basic ' + btoa(`${username}:${password}`);
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'
}
});
} catch (error) {
return new Response('错误: ' + error.message, { status: 500 });
}
}
|