继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

皮纳塔文件系统(Pinata 文件系统)和 PinDrop

蓝山帝景
关注TA
已关注
手记 482
粉丝 47
获赞 152

这是为The Pinata Challenge提交的投稿。

我创建的

Pinata 文件系统和 PinDrop 功能作为 Pinata 存储系统之上的一个层,允许用户使用文件夹和子文件夹来整理和可视化展示他们的文件。

它提供了一个接口,同时扩展了 Pinata 的特性。用户可以将文件关联到文件夹,并且可以执行许多通用功能,比如创建、删除和下载文件和文件夹。

灵感来源

我在第一天的“黑客松”上决定要制作一个快速私密的文件分享工具,因为这是我需要的东西。但因为事情太多,这个想法只好放弃了。

快进到截止日期前一天,我想到了群组功能,可以利用它。我可以利用关系型数据库通过自我参照创建层级结构,使其成为一个功能完备的平台来存储和整理文件。

经过连续24小时的不眠开发,我成功推出了Pinata文件系统的第一个版本。

静音文件夹

有一个我构思的功能叫做PinDrop(灵感来自AirDrop),它作为一个默认文件夹,在用户注册时,系统会默认创建该文件夹。
这个文件夹非常特殊,因为它没有子文件夹,用户可以将文件直接推入堆叠。以后再取用即可。该功能旨在实现用户在不同设备间的即时文件共享。未来它可能还会有自己的专用服务和路由。

演示

https://pinata-fs.vercel.app/

你可以在这里找到这个项目: 这是 GitHub 上的一个链接:https://github.com/mr-loop-1/pindrop

概览

为了未来

数据库最好的地方在于它不存储任何实际文件的信息。它只是对群组的层级表示。
目前看来可能有些冗余,这主要是因为注册时应用程序会要求jwt和网关认证,但我通过Discord得知正在开发新的身份验证提供者,一旦集成,应用程序将完全脱离与实际用户数据的关联。

技术堆栈(例如:前端技术、后端技术等)

后端:expressjs, knexjs, mysql,运行在 Railway 上
前端技术栈:vite react, tailwind,托管在 Vercel 上

简单概述

  1. 首先是登录/注册页面。注册时,需要输入有效的pinata jwt和网关url。但这些信息不会在客户端显示,仅供服务器使用。

  2. 这是挂载在"~/ "的根目录。其他所有文件夹都应从这里衍生。在Pinata里,用户首次注册时会创建这个根目录。

图片

支持的文件类型可以通过点击任何文件夹里的“添加文件”按钮来添加。添加后,文件会出现在 pinata 中对应文件夹的组里。

看这张图片: 这是一张示例图片。

除了在根目录的 pinDrop 文件夹(pinDrop 文件夹)之外,还可以在任何地方新建文件夹。

图片说明:这是一张示例图片
这是一张图片,点击可以查看。

点击文件夹即可进入该文件夹,我们还提供了一个返回按钮来返回上一级文件夹。若要回到根目录,请从 URL 中删除 id 参数。

图片

这是一张图片:图片说明

  1. 文件和文件夹可以使用右侧的按钮进行删除。pinDrop 文件夹不能被删除,因为它位于根目录。

  2. 文件可以通过下载按钮在新标签页打开。这通过一个1分钟内失效的签名链接实现。
我的这段代码

https://github.com/mr-loop-1/pindrop

提供了本地运行的说明。请在评论或GitHub问题中提出任何错误或问题。

更多详情。

请确认

  • 文件夹名称不能包含空格
  • 即使在不同的文件夹中上传相同的文件或文件名也不行,因为Pinata会将它们合并存储在一起
前行之路
  • 下载多个文件和整个文件夹
  • 目前删除文件夹时,子文件夹中的文件会处于悬空状态。(我尚未在Knex和Pinata的SDK中实现递归删除的查询。)
  • 进行了一些bug修复和字段验证工作
  • 当前要求用户手动提供其Pinata账户的jwt和网关信息。我计划将未来的Pinata OAuth提供者集成到应用程序中。
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP