有没有基于 oss 的静态网页做的网盘

2022-04-21 18:33:21 +08:00
 mao13820

我想要一个静态的网页,不涉及后端。直接用前端调用 oss 的 api 完成文件上传,文件列表显示和下载,实现基本的网盘功能。

感觉这个非常方便,不需要购买云主机,直接把静态网页也托管在 oss 上就好了。平时只有储存的费用。

我知道这有风险,毕竟 api key 直接在前端暴露。但是我主要是几个朋友之间小规模用,再加上设置好足够的权限和资源限制,可以把风险控制住。

不知道有没有现成的项目,可以直接使用的?

我用阿里云的教程,搭了一个纯静态的,上传的网页,但是文件列表显示与下载的那个网页没做成,不知道要怎么实现?

谢谢各位

1546 次点击
所在节点    问与答
14 条回复
Chad0000
2022-04-21 18:40:39 +08:00
Cloudflare Pages ,网页放 Git 中,免费不要钱。只是不要传太大文件。
mao13820
2022-04-21 18:46:58 +08:00
@Chad0000 谢谢。我主要是不知道怎么写那个静态网页。我想写个包含上传文件,显示文件列表,下载文件这三个功能的静态网页。具体操作是调用对象存储的 api 完成的,文件平时就放在 oss 中,网页托管在 git 或者 oss 中。这样就不需要服务器了。
Chad0000
2022-04-21 18:54:39 +08:00
@mao13820
如果要用 OSS ,你可以用 JS 把 API Key 加密,密码在页面上手动输入,这样就不是特别担心 API Key 暴露。或者每次输入 API Key 也行。
TMaize
2022-04-21 18:55:00 +08:00
yin1999
2022-04-21 19:20:59 +08:00
我之前做过一个,讲一下我做的思路:
1. API Key 用 AES-GCM 加密,放 OSS 里面,并设置权限为公开
2. 放置文件的目录权限设置成私密,只允许带权限访问
3. 前端访问的时候,要登录输入密码,这个密码就是 API key 的加密密钥,如果解密成功,就能获取 API key ,从而在前端通过调用 API Key 来访问私密文件夹
4. 关于文件列出这一块,可以配合函数计算服务,在阿里云函数计算那边弄一个 OSS 触发的函数计算服务,它能够在文件列表发生变化时,将当前目录下的文件目录写道一个专门列出文件列表的目录下,并以 JSON 格式存储,前端可以直接调用获取。当然,这块也可以通过调用 API 直接列出目录,这个实时性较高。

附一个之前写的,很(非常)简陋的项目(不带函数计算那块,文件权限那块也没弄,默认是公开访问,仅上传需要 API Key ,这个可以自己改)。核心代码就是 scripts 里面的 fileManager.js ,实现了上传、登录、文件列出、删除这几个功能,如果还需要其它的功能,可以参照阿里云 OSS 的 API 文档自己加。

https://asset.dvlp4.fun/file-share/fileLister.zip
yin1999
2022-04-21 19:29:04 +08:00
@yin1999 补充一下,因为文件上传到一半后中断的话,OSS 会默认保留文件,所以文件上传那块是有做 md5 校验的( WebAssembly ),如果不需要这个,或者要用其它的 md5 库,可以自己改哈。
mao13820
2022-04-21 20:43:57 +08:00
@yin1999 非常感谢,我下载下来试了一下,发现无法直接打开,有以下报错。不知如何处理,谢谢
Failed to load resource: net::ERR_FILE_NOT_FOUND
index.full.js:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
index.css:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
index.css:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
index.js:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
upload.svg:1 Failed to load resource: net::ERR_FILE_NOT_FOUND
yin1999
2022-04-21 21:48:32 +08:00
@mao13820 这个是引用的图标缺失的问题,项目不是很完整,路径、资源文件引用啥的也得改改
sommer
2022-04-21 21:52:28 +08:00
那为什么不直接用对象存储自己的控制台呢?
A01514035
2022-04-21 21:55:50 +08:00
@sommer #9 几个朋友之间小规模用,别人没有账号密码吧
sommer
2022-04-21 21:57:21 +08:00
@A01514035 可以分配子账号,只给对象存储的权限,读写,只读,只写,某个文件或者文件夹的读写只读只写,都可以精细控制
cheese
2022-04-21 23:14:26 +08:00
列表显示有 listV2 方法,但是 oss 是对象储存,所以需要你自己去处理路径,模拟文件夹,如果是小文件多的话,还得做好列表渲染优化。
实际上阿里云官方的客户端就挺好用的,你只要在 ram 控制里,设定好你每个朋友的权限就行了,oss 权限我记得甚至可以设定到一个文件夹(不太确定了,之前好像看过)。用那个更加方便
mao13820
2022-04-22 03:44:45 +08:00
@cheese 谢谢,主要是登录太麻烦了。我想的是,打开即用,上传和下载可以随手。
mao13820
2022-04-22 03:45:16 +08:00
@yin1999 好的,我研究看看,谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/848417

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX