posts: 新增匿名文件上传功能文章,介绍如何使用EdgeOne Pages和对象存储实现匿名文件上传。在世界各地,只要有网,就能将你想要的文件带回家

This commit is contained in:
二叉树树
2025-11-08 11:41:26 +08:00
parent 8c5ab7f968
commit df77d6e806
6 changed files with 44 additions and 60 deletions

View File

@@ -1,35 +0,0 @@
---
name: 添加友链
about: 申请添加新的友情链接
title: '添加友链: [你的网站名称]'
labels: friend-link
assignees: ''
---
## 友链信息
请填写以下信息:
### 基本信息
- 网站名称:
- 网站描述简短介绍建议不超过50字
- 网站链接必须使用HTTPS
- 头像链接必须使用HTTPS建议使用长期有效的链接
### 确认清单
- [ ] 我的网站已添加本站友链
- [ ] 我的网站内容符合中国大陆法律法规
- [ ] 我的网站在过去3个月内有更新内容
- [ ] 我的网站可以正常访问
- [ ] 我提供的所有链接都使用HTTPS协议
- [ ] 我提供的头像链接是长期有效的
### 本站友链信息
请告诉我们您网站上添加的本站友链信息:
- 使用的名称:
- 使用的描述:
- 使用的链接:
- 使用的头像:
### 补充说明
如有其他需要说明的内容,请在此处补充:

View File

@@ -1,25 +0,0 @@
---
name: 赞助支持
about: 添加赞助信息到赞助列表
title: '添加赞助: [你的名字]'
labels: sponsor
assignees: ''
---
## 赞助信息
请填写以下信息:
### 基本信息
- 显示名称:
- 赞助金额:
- 赞助日期格式YYYY-MM-DD
- 头像链接可选建议使用HTTPS链接
### 确认清单
- [ ] 我已确认赞助金额已成功支付
- [ ] 我提供的头像链接是长期有效的
- [ ] 我同意将这些信息公开显示在网站的赞助者列表中
### 补充说明
如有其他需要说明的内容,请在此处补充:

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,44 @@
---
title: 自建一个匿名文件上传终结点
published: 2025-11-08T11:02:04
description: 你有没有遇到过一种场景?在学校/公司电脑需要带一个文件走但是又不想安装远程软件。那么今天教你无需U盘让你在任何地方将你想要的文件带回你家
image: ../assets/images/unknown-upload.png
tags:
- EdgeOne
- 对象存储
draft: false
lang: ""
---
# 明确需求
在做一个项目时,无论大小,首先我们要知道自己需要什么,哪些是刚需,哪些是次要的,哪些是根本不必要的
深度思考一下,我觉得该项目使用场景应该在:当我处于非家庭环境,且手上有一台不直通家庭网络但是可连接至互联网的设备,需要传输一些非敏感文件且文件不大(如:文档,截图,小软件)
那么大致的需求即为:
1. 基于Web网页制作一个前端页面必须包含一个 `input file` 。上传完成打印上传完成
2. 后端将文件放到一个存储空间。该存储空间必须在家庭网络内较方便的访问
# 梳理思路,决定架构
一开始我想用一种最简单的方法,这种方法无需编写任何代码。那就是使用 [【花生壳HFS for win 正式版】使用教程-贝锐花生壳官网](https://hsk.oray.com/news/14884.html) 。我只需要将该软件部署在我的家庭电脑然后通过CDN将服务映射到公网即可。但这会遇到几个问题
1. 若我的家庭电脑离线,服务将不可用
2. 使用时会占用家中的下载带宽
![](../assets/images/unknown-upload-1.png)
那么换个思路,我们是否可以借助对象存储?
当然可以,我只需要找一个云函数连接到我的对象存储,然后提供一个上传端点
# 正式开始
于是我找到了EdgeOne Pages它的Functions非常适合做这件事且支持原生Node运行时也就是 `node-functions` 直接使用 `AWS-S3` 这个NPM包再做一个最简单的前端上传页面搞定
![](../assets/images/unknown-upload-2.png)
为了防止上传重名文件,每个文件上传后都会被重命名为 `原文件名_时间戳_IP`
该项目已开源 [afoim/EdgeOnePageFunctionUnknownUploader-S3-](https://github.com/afoim/EdgeOnePageFunctionUnknownUploader-S3-)