{"id":50705183,"url":"https://github.com/DullJZ/bashupload-r2","last_synced_at":"2026-06-26T11:00:35.190Z","repository":{"id":310379013,"uuid":"1039620248","full_name":"DullJZ/bashupload-r2","owner":"DullJZ","description":"Use CF Worker \u0026 R2 to set your own fast file transit station, and simply upload from bash. Support password for upload and download. Support setting file lifetime.用CF Worker和R2来建立自己的快捷文件中转站，使用终端轻松上传。支持密码保护上传下载和文件有效期","archived":false,"fork":false,"pushed_at":"2026-01-09T18:01:56.000Z","size":128,"stargazers_count":58,"open_issues_count":1,"forks_count":20,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-25T09:31:34.942Z","etag":null,"topics":["cloudflare","file","file-upload","js","r2","worker"],"latest_commit_sha":null,"homepage":"https://bashupload.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DullJZ.png","metadata":{"files":{"readme":"README-zh.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-17T16:21:11.000Z","updated_at":"2026-01-22T07:43:06.000Z","dependencies_parsed_at":"2025-11-17T08:00:39.328Z","dependency_job_id":null,"html_url":"https://github.com/DullJZ/bashupload-r2","commit_stats":null,"previous_names":["dulljz/bashupload-r2"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DullJZ/bashupload-r2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DullJZ%2Fbashupload-r2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DullJZ%2Fbashupload-r2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DullJZ%2Fbashupload-r2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DullJZ%2Fbashupload-r2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DullJZ","download_url":"https://codeload.github.com/DullJZ/bashupload-r2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DullJZ%2Fbashupload-r2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34813782,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudflare","file","file-upload","js","r2","worker"],"created_at":"2026-06-09T11:00:26.332Z","updated_at":"2026-06-26T11:00:35.183Z","avatar_url":"https://github.com/DullJZ.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# BashUpload-R2\n\n[English](README.md) | 中文\n\n基于 Cloudflare Workers 和 Cloudflare R2 对象存储构建，适合命令行和浏览器的简单文件上传服务。\n\n[![Deploy to Cloudflare](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/DullJZ/bashupload-r2)\n\n直接使用：[bashupload.app](https://bashupload.app)\n\n感谢 [bashupload.com](https://bashupload.com) 及其作者 [@mrcrypster](https://github.com/mrcrypster) 提供的灵感。\n\n## 快速开始\n\n```sh\n# 上传文件并返回普通链接\ncurl bashupload.app -T file.txt\n\n# 上传文本内容（保存为 .txt 文件）\ncurl bashupload.app -d \"你的长文本内容\"\n\n# 上传并返回短链接\ncurl bashupload.app/short -T file.txt\n\n# 上传并设置有效期（86400秒=24小时，允许多次下载）\ncurl -H \"X-Expiration-Seconds: 86400\" bashupload.app -T file.txt\n```\n\n使用命令行别名快速设置\n\n```sh\nalias bashupload='curl bashupload.app -T'\nalias bashuploadtext='curl bashupload.app -d'\nalias bashuploadshort='curl bashupload.app/short -T'\nalias bashuploadexpire='curl -H \"X-Expiration-Seconds: 3600\" bashupload.app -T'\nbashupload file.txt            # 返回普通链接\nbashuploadtext \"你的文本内容\"   # 上传文本内容\nbashuploadshort file.txt       # 返回短链接\nbashuploadexpire file.txt      # 返回1小时有效期链接\n```\n\n要使别名永久生效，请将其添加到你的 shell 配置文件中。\n\n```sh\necho \"alias bashupload='curl bashupload.app -T'\" \u003e\u003e ~/.bashrc\necho \"alias bashuploadtext='curl bashupload.app -d'\" \u003e\u003e ~/.bashrc\necho \"alias bashuploadshort='curl bashupload.app/short -T'\" \u003e\u003e ~/.bashrc\necho \"alias bashuploadexpire='curl -H \\\"X-Expiration-Seconds: 3600\\\" bashupload.app -T'\" \u003e\u003e ~/.bashrc\nsource ~/.bashrc\n```\n\n## 浏览器上传\n\n- 拖拽文件或点击选择文件\n- 设置文件的有效期\n- 直接下载链接\n- 无需注册\n\n## 特性\n\n- 简单的命令行接口\n- 快速文本分享\n- 浏览器拖拽上传\n- 无需注册\n- 直接下载链接\n- 隐私保护：文件在下载后自动删除\n- 安全的文件存储，仅限一次下载\n- 支持自定义有效期：可设置文件有效期，在指定时间内允许多次下载\n- 支持最大 5GB 的文件（自部署可调整）\n- 支持自部署设置密码\n\n**隐私注意：** 为了您的隐私和安全，文件在下载后会立即从我们的服务器上删除。每个文件**默认只能下载一次**，**除非您设置了有效期**。设置有效期后，文件可以在有效期内多次下载。下载后请务必将文件保存在本地，因为链接在首次下载后（一次性下载）或过期后（有效期下载）将不再有效。\n\n\n## 自部署到Cloudflare\n\n点击上方的 \"Deploy to Cloudflare\" 按钮，修改配置。\n\n其中，`MAX_UPLOAD_SIZE`单位为字节（默认为 5GB），`MAX_AGE`单位为秒（默认为 1小时），可以根据需要进行调整。\n\n`MAX_AGE_FOR_MULTIDOWNLOAD` 是允许多次下载的最大有效期时间，单位为秒（默认值是86400，即24小时）。用户可以设置不超过此限制的自定义有效期。\n\n`SHORT_URL_SERVICE` 是短链接服务的 API 端点（默认为 `https://suosuo.de/short`），如果需要，可以将其更改为您自己的短链接服务。仅支持 [MyUrls](https://github.com/CareyWang/MyUrls)。\n\n`PASSWORD` 环境变量为上传、下载必须提供的密码。如果不需要密码保护，可以将其留空。\n\n编译部署最后一步可能会出现部署失败的错误，原因是默认使用了配置文件中的 bashupload.app 作为域名。事实上项目已经部署成功，在Worker项目设置中进行域名绑定即可。\n\n## 高级功能\n\n### 自定义有效期\n\n通过使用 `X-Expiration-Seconds` 头部，您可以为上传的文件设置自定义有效期。这允许文件在过期前被多次下载，过期后文件将自动删除。\n\n示例：\n```sh\n# 设置1小时有效期（文件可多次下载1小时）\ncurl -H \"X-Expiration-Seconds: 3600\" bashupload.app -T file.txt\n\n# 设置24小时有效期\ncurl -H \"X-Expiration-Seconds: 86400\" bashupload.app -T file.txt\n\n# 设置7天有效期\ncurl -H \"X-Expiration-Seconds: 604800\" bashupload.app -T file.txt\n```\n\n**重要说明：**\n- 不设置有效期时，文件只能下载一次（一次性下载）\n- 设置有效期后，文件在有效期内可多次下载\n- 最大允许的有效期由 `MAX_AGE_FOR_MULTIDOWNLOAD` 控制（默认：24小时）\n- 浏览器上传也通过UI支持设置有效期\n\n### 快速文本分享\n\n您可以快速分享长文本片段、代码、日志或任何文本内容，无需先创建文件。只需使用 `curl -d` 直接上传文本，它将自动保存为 `.txt` 文件。\n\n示例：\n```sh\n# 分享快速文本片段\ncurl bashupload.app -d \"这是我遇到的错误信息...\"\n\n# 分享代码片段\ncurl bashupload.app -d \"$(cat script.sh)\"\n\n# 分享命令输出\ncurl bashupload.app -d \"$(ls -la)\"\n\n# 设置有效期以便多次查看\ncurl -H \"X-Expiration-Seconds: 3600\" bashupload.app -d \"今天的会议记录...\"\n\n# 结合短链接方便分享\ncurl bashupload.app/short -d \"你的文本内容\"\n```\n\n### 密码保护\n\n要启用密码保护，请在 Cloudflare Worker 设置中设置 `PASSWORD` 环境变量。当设置 PASSWORD 后，上传和下载都需要在 Authorization 头中提供密码。\n\n使用 curl 的示例：\n```sh\n# 带密码上传\ncurl -H \"Authorization: yourpassword\" bashupload.app -T file.txt\n\n# 带密码下载\ncurl -H \"Authorization: yourpassword\" https://bashupload.app/yourfile.txt\n```\n\n设置含密码的alias别名：\n```sh\necho \"alias bashupload='curl -H \\\"Authorization: yourpassword\\\" bashupload.app -T'\" \u003e\u003e ~/.bashrc\necho \"alias bashuploadshort='curl -H \\\"Authorization: yourpassword\\\" bashupload.app/short -T'\" \u003e\u003e ~/.bashrc\nsource ~/.bashrc\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDullJZ%2Fbashupload-r2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDullJZ%2Fbashupload-r2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDullJZ%2Fbashupload-r2/lists"}