主机论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 13|回复: 0

[白女票系列]Cloudflare Workers 和 KV 搭建临时文件上传服务器

[复制链接]

24

主题

275

帖子

810

积分

高级会员

Rank: 4

积分
810
发表于 2024-5-2 10:37:46 | 显示全部楼层 |阅读模式
本帖最后由 52Fancy 于 2024-5-2 11:06 编辑
  1. export default {
  2.   async fetch(request, env) {
  3.     if (request.method == 'GET') {
  4.       try {
  5.         const code = request.url.split('/').pop();
  6.         if (code){
  7.           const value = await env.file.get(code)
  8.           if (value == null) {
  9.             return new Response("Value not found", {status: 404})
  10.           }
  11.           return new Response(value)
  12.         }else{
  13.           return new Response('Usage: curl -k -F "file=@文件" ' + request.url.slice(0, -1))
  14.         }
  15.       }catch (e){
  16.         return new Response(e.message, {status: 500})
  17.       }
  18.     }

  19.     if (request.method == 'POST') {
  20.       try {
  21.         const formData = await request.formData()
  22.         const file = formData.get('file')
  23.         if (file){
  24.           const fileName = getName()
  25.           await env.file.put(fileName, file.stream(), {expirationTtl: 300})
  26.           return new Response('"link":"' + request.url + fileName + '"' )
  27.         }else{
  28.           return new Response('Usage: curl -k -F "file=@文件" ' + request.url.slice(0, -1))
  29.         }
  30.       }catch (e){
  31.         return new Response(e.message, {status: 500})
  32.       }
  33.     }
  34.   }
  35. }

  36. // 生成一个唯一的文件名
  37. function getName() {
  38.   let randomString = '';
  39.   const alphabet = 'abcdefghijklmnopqrstuvwxyz'
  40.   for (let i = 0; i < 5; i++) {
  41.     randomString += alphabet.charAt(Math.floor(Math.random() * alphabet.length))
  42.   }
  43.   return randomString + Date.now()
  44. }
复制代码

新建Cloudflare Workers 和 Cloudflare KV
在Cloudflare Workers ->设置 ->变量 ->KV 命名空间绑定 ->添加绑定 ->变量名称填写file ->KV 命名空间选择刚才新建的KV ->部署
把index.js代码复制粘贴到Workers部署
  1. Usage: curl -k -F "file=@文件" 你的Workers域名
复制代码

cloudflare真是个大善人,用wokres和kv来创建一个临时的文件上传服务器,虽然有限制,但是白女票还是很香的。
详情请看 https://github.com/52fancy/NetInstallAlpine
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2024-5-18 13:24 , Processed in 0.059792 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表