如何上传游戏文件

如何上传游戏文件

ringyuki4 天前
Shionlib 的大文件上传系统指南:支持断点续传、哈希校验与安全扫描;通过上传额度机制确保系统可持续与安全运行。

Shionlib 的大文件上传系统介绍

为什么需要设计一套大文件上传系统?

Shionlib 的目标之一是创建和维护一个完整、可控的全年代 视觉小说/Galgame 档案库,达成这个目标绝非易事,以我们的经验来看,只有社区驱动的模式才能做到这一点。

因此,我们设计了一套上传系统,向所有用户开放大文件上传权限。

上传系统的工作流程

你选择本地文件后,系统会将文件进行分片,每个分片的大小不会超过 5MB,并计算文件的 SHA-256 哈希值。

上传流程开始后,系统会把得到的所有分片和哈希值发送到 Shionlib 服务器。最终,服务器会对上传完成的分片进行合并,再次计算文件的 SHA-256 哈希值,并与浏览器计算的哈希值进行对比,如果一致,则标记为上传成功。

随后,Shionlib 服务器会对上传完成的文件进行扫描,检查文件是否符合要求 (包括文件是否完整、损坏、是否被加密、是否包含恶意程序等)。如果扫描通过,文件将进入等待队列,等待被上传至 Shionlib 的 S3 储存桶。

最后,文件将被上传至 Shionlib 的 S3 储存桶,并生成一个下载链接,上传流程标记为成功结束。

挑战

显而易见的,我们必须非常谨慎地设计整个系统,如果有任何人试图以各种方式破坏系统,后果都将是难以承受的。

  • 恶意上传大量巨大文件。这会占用超出预期的大量存储空间,我们可能会因此需要支付高额的储存费用
  • 恶意上传包含恶意程序的文件。尽管在整个流程中,我们不会尝试解压或执行文件,但依旧可能会对下载此文件的用户造成威胁

为了保障整个系统可以正常、可持续地运行,我们设计了上传额度系统。

每个用户在注册的七天后,会获得 5GB 的上传额度,且会在每个月的第一天重置。如果你在当月正常消耗了上传额度 (即向 Shionlib 上传了合规的文件),系统会动态增加你的上传额度,但最多不会超过 20GB。

如果你需要上传更大的文件,可以向管理员申请提高你的上传额度。

需要注意的是,系统会在以下任何一种情况下清空/扣除你的上传额度,甚至封禁你的账号:

  • 你上传的文件被系统判定为包含恶意程序的文件
  • 你上传的文件为没有任何意义的垃圾文件
  • 你的账号长期处于不活跃状态
  • 其他用户举报你上传的文件为违规文件

上传文件

格式以及文件命名规范

上传的文件需要打包为单个 zip/rar/7z/tar/gzip 文件,并且不能设置密码

文件名可以是游戏的名称/别称等,没有强制要求,但我们不建议你在文件名中包含太多的信息,如语言、翻译组/译者、版本号等,这类信息可以添加到你将要创建的资源的元信息中 (将在下文提到)。

开始上传

点击游戏条目页面中的 上传 按钮,打开上传窗口。随后,选择你要上传的文件,点击 开始 按钮即可开始上传。

上传过程中,你可以通过上传窗口中的进度条来查看上传进度。上传过程中请保持浏览器和当前标签页在前台运行,直到上传完成。

你可以随时点击 暂停 按钮来暂停上传,我们会保留此次上传会话,稍后点击 继续 按钮即可继续上传。

我们在设计时考虑到了上传中断的情况,并提供了断点续传。如果上传中断,你可以重新打开上传窗口,此时应当会显示正在进行的上传,点击对应的上传会话的 继续 按钮,选择相同文件即可继续上传。

继续上传

文件上传完成后,可以在下方填写文件的元信息,包括运行平台、语言和备注。填写完成后,点击 确认提交 按钮即可提交此次上传。

填写元信息

提交完成后,系统会开始对文件进行处理,包括扫描、上传至 S3 等操作。你可以在网站首页的最新动态区域查看文件处理进度。

Command Palette

Search for a command to run...

如何上传游戏文件 - 书音的图书馆