演示地址
SCF 简介
腾讯云云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码,是实时文件处理和数据处理等场景下理想的计算平台。您只需使用 SCF 平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。
无服务器(Serverless)不是表示没有服务器,而表示当您在使用 Serverless 时,您无需关心底层资源,也无需登录服务器和优化服务器,只需关注最核心的代码片段,即可跳过复杂的、繁琐的基本工作。核心的代码片段完全由事件或者请求触发,平台根据请求自动平行调整服务资源。Serverless 拥有近乎无限的扩容能力,空闲时,不运行任何资源。代码运行无状态,可以轻易实现快速迭代、极速部署。
腾讯云 SCF 目前仍在 公测 阶段,所有用户可免费使用,结束日期待定。公测结束后,每月仍可享受足量的 免费资源使用量和免费调用次数,但收取 外网出流量 费用。
| 资源类型 | 每月免费额度 |
|---|---|
| 资源使用量 | 40 万 GBs |
| 调用次数 | 100 万次 |
所谓外网出流量,即程序通过 SCF 访问外部网络的流量,对于本程序即请求微软 API 的流量,每次调用从几 B 到几 KB 不等;文件上传下载直接与微软交互,不经过 SCF。
下图(老图可能与描述不符)是我一天的使用量,大概调用了 10000 次,如果是 30 天就是 30 万次,还不到免费额度的 1/3。资源使用量 1000 GBs,30 天就是 3 万 GBs,远低于 40 万 GBs。外网出流量 0.05G ,一个月大概是 1.5 G,按照 正式收费标准 0.8 元/G,每月要支付 1.2 元的出流量费用,完全可以接受(目前不会收取)。

创建函数服务
登录 腾讯云 SCF 控制台(在此之前要完成腾讯云 实名认证),点击左侧菜单栏的 函数服务,接着点击顶栏的地区选择下拉框,选择 香港,因为大陆区域在绑定域名时需要备案,如果你拥有已备案的域名,则可以选择国内,当然不绑定域名也可以使用。接着点击蓝色的 新建 按钮,创建函数。

随后在新建函数页面填写 函数名称,名字随意;运行环境 选择 Php 7.2;创建方式 选择 模板函数;选择 helloworld 模板,最后点击最下方的 下一步。进入 ② 函数配置 页面后不做任何修改,直接点击 完成。
VWO~RYU4QSIHMEE_{PG.png" title="GXVWO~RYU4QSIHMEE_{PG.png">
上传函数代码
下载并解压 OneDrive_SCF。随后,进入 SCF 函数代码 面板,将 提交方法下拉框 的值改为 本地上传文件夹,随后点击 上传,选择 解压好的文件夹,最后点击 保存。注意,解压后查看一下是否包含两层文件夹,如果是,上传内层。

获取并填写 refresh_token
进入 该网址(世纪互联版点我),点击其中的 Get a refresh_token,在打开的微软账号登录页面中,填写你的 OneDrive 账号和密码,完成登录。
T]W\_6)TC%RBYPYG8UV.png" title="5}RT]W\_6)TC%RBYPYG8UV.png">
稍等片刻页面将返回 refresh_token,复制它备用。

进入 SCF 函数代码 面板,选中 index.php,将得到的 refresh_token 粘贴进,下图所示的单引号之间,最后点击靠近左下方的 保存。

配置环境变量
进入 函数配置 面板,点击靠近右上角的 编辑 按钮。

在新面板中,将 内存 修改为 512M,当然 64M 也是可以运行的,需要说明的是,内存越大可用的免费时长越少;超时时间 填写 30,随后添加几个环境变量,它们的功能如下:
| 名称 | 含义 | 备注 | 示例 |
|---|---|---|---|
| sitename | 站点名称 | 无 | 我的网盘 |
| public_path | 要展示的根路径 | 无 | / |
| private_path | 要展示的根路径 | 使用自定义域名时必须设置 | / |
| imgup_path | 图床路径 | 其他网页可以引用上传的图片 | /图床 |
| passfile | 密码文件名称 | 在某目录下添加该文件,里面写入密码即可加密文件夹 | password.txt |
| admin | 管理员密码 | 管理员登录后功能更多 | 1234 |

添加触发方式
进入函数服务的 触发方式 面板,点击 添加触发方式。选择触发方式下拉框中的 API网关触发器,勾选下方的 启用集成响应,点击 保存。

稍等片刻,下方会出现一个 访问路径,点击打开它。

出现网盘首页代表安装成功。

自定义域名(可选)
进入函数服务的 触发方式 面板,点击打开 SCF_API_SERVICE。

打开服务界面的 自定义域名 面板,点击 新建。

在添加域名对话框中,填写你的 域名,协议 选择 http,如果你想使用 https,则必须在腾讯云 申请或上传 SSL 证书,如果你已经在其他平台申请过推荐直接上传,因为申请一般要等待数小时才能完成。未进行上述操作你看到的 证书下拉框 里将会是无。网络类型勾选 外网。选择 自定义路径映射,添加一条记录,路径为 /,指向 发布 环境。

打开你的域名解析服务商控制台,在域名解析列表里添加一条 CNAME 记录,值便是图中上方的 外网二级域名。最后点击 提交。
进入 管理 API 面板,点击 编辑。

在 前端配置 面板中,将路径改为 /,点击下一步。

在 后端配置 中,保证已勾选 启用集成响应 后点击 下一步。

在 响应结果 面板,将 返回类型 改为 HTML,点击 完成。

在弹出的对话框中,点击 前往发布服务。

在 服务信息 面板,点击靠近 右上角 的 发布 按钮。

在弹出的 发布服务 对话框中,将 发布环境 改为 发布,备注 随意填写,最后点击 提交。

现在就可以通过自定义域名访问你的网盘了。
使用 Github Pages 缩短长链接(可选)
如果你没有域名和服务器,可以通过 Github Pages 跳转的方式,适当缩短首次访问的路径长度,最终可以通过 username.github.io 打开你的网盘。
注册并登录 Github,随后打开 该仓库,点击靠近右上角的 Fork。稍等片刻,打开页面中部的 index.html。

点击靠近 右上角 的 铅笔 按钮,编辑该文件。

将你的 函数 API 网关访问路径 替换到文件中。

修改完毕后点击靠近页面最下方的 Commit changes。

点击靠近右上角的 Settings,将 Repository name 改成 你的 Github 用户名.github.io,随后点击 Rename。

下拉该页面,找到 Github Pages,将 Source 下拉框的值改成 master branch,如果没有则无需修改。

现在,就可以通过 你的 Github 用户名.github.io 访问网盘了。
功能建议、Bug 反馈,请前往 逸笙大佬主页,也请为他多多加星。
如有问题请在下方留言,文章转载请注明出处,详细交流请加下方群组!请大佬不要屏蔽文中广告,因为它将帮我分担服务器开支,如果能帮忙点击我将万分感谢。
搭建好后管理密码是admin吗?
或者说怎么管理啊QAQ
搞定了=+=
秒啊::quyin:die::
请问一下、世纪互联国内的onedrive可以吗
支持
谢谢,回去我试试
能够添加但是不能预览图片和视频,现在的话有错误代码
{"error":{"code":"serviceNotAvailable","message":"Service unavailable","retryAfterSeconds":120}}
index.php 头部有设置账户版本的地方,你看看
哈哈别的地儿申请的证书没在腾讯云备案用不了用网关访问路径可太慢了,文件上传到od马上就能展示出来挺赞的,pyone还要同步
这版主要是能白嫖腾讯云,管理功能还是不及其他有服务器版本。如果仅为了列表快可以试试 FODI
https://logi.ml/front-end/scf-fodi.html
网页弄好了以后,单个文件没办法删除,文件夹可以删除,大佬能解决一下吗?@@(真棒)
功能或建议到 Github 提吧,这篇文章只解决安装问题,并且我推荐使用客户端管理
怎么创建文件夹,我这边怎么创建不了文件夹?
文中没提到创建文件夹,你说的是哪一步呢
我是已经搭建成功了,用管理员登录后上传文件时怎么创建文件夹?
本文仅解决安装问题。此外,界面上有新建文件夹的按钮,更推荐使用客户端管理文件
大佬,那个OneDrive_SCF文件夹上传不了
换浏览器或者开隐私模式以关闭所有插件,可能是插件与网页冲突了
解决了,谢谢大佬
大佬 不成功啊 到Get a refresh_token这一步,登陆了微软账号后返回
“”如果长时间未跳转,请点击:继续安装
有误!微软code为空!“”
并没有得到代码 什么原理啊 是我的微软账户有问题?
你用的是什么账户呢
用的是申请的教育网1T的office账户,用客户端和网页版上传下载都没问题 但是操作到这一步就返回 有误!微软 code 为空!
如果是国内教育账户,试着把 index.php 里面的版本改成 1,具体见下图
https://img12.360buyimg.com/img/jfs/t1/43290/21/15591/35744/5d847109E66e1f130/bf733cf532660643.png
好的 我去试试 谢谢回复!!@(呵呵)
还是不行 改成1之后点开get token的链接之后账户都登不进去了。。。说系统内没有这个域
那可能是管理员没有开放 API 权限吧
大佬 从你这买的那个可以吗? 能用多久 我买一个
可以,但是能用多久要看微软政策,目前我的已经用了 1 年
涨价了啊 还是我来晚了
之前是促销@(捂嘴笑)
ok
请问怎么创建password .password没有文件名创建不起来呀
我用 Win10 可以呀@(捂嘴笑),不叫 .xx 也行,环境变量随便改的。
或者用下面的 Powershell 命令生成,其中 1234 是密码。
1234 | Out-File .password
password后加个.就可以了已解决谢谢
可是五服务器云函数说外网流量不免费,这里外网指的是啥?
云函数目前还在公测,不收费,所以不用担心,具体见
https://cloud.tencent.com/document/product/583/17299
公测期限试情况而定,即使正式收费,如上文所述,仍有充足的免费调用次数和资源使用量,仅收取外网出流量费用。
对于本程序,外网出流量指的是向微软请求 Onedrive 文件列表和上传文件的流量。我没有开放文件上传,不过现在 1 天也有接近 1 万次调用,1 千 G 资源使用和 0.05G 的外网出流量。一个月大概产生 1.5 G 出流量,按照今后的收费标准,0.8 元/G,每月大概会扣 1.2 元,具体见
https://cloud.tencent.com/document/product/583/12281
所以现在不用担心,正式收费后只要关闭上传,每月的费用也可忽略不计。
纠正一下,目前的上传功能是直接从浏览器到 Onedrive 的,不经 SCF,所以不计外网出流量,可以放心上传。
感谢博主的解答,今天上传了个4G文件,好像没有大小限制,是修复了吗。
还有个问题,买了你提供的教育部账号,管理员会不会看到网盘的内容,还有哪天网盘账号被删了@(吐舌)
管理员能够看到,虽然我不会看。账号违规使用会被封停,但有半年左右的时间取回文件。所以不要存放隐私内容,特别重要的文件要在别的地方备份。
上传功能还在优化,我不是主作者,有问题可以到 Github 反馈。感谢支持
https://github.com/Tai7sy/OneDrive_SCF
博主,我想要你那个演示地址帅气的站点名字,咋弄的。@(乖)@(乖)
@(哈哈) 改一下字体就行了,可以直接用下面这个 index.php 的内容替换你的,需要填入你的 refresh_token
https://disk.ml/Linux/Sources/OD-SCF/index.php
修改过程见下图
https://img11.360buyimg.com/img/jfs/t1/57877/38/11225/48734/5d81ffadE8ee00e28/30754885898fb609.png
谢谢。@(花心)
做到最后改dhwc.github.io,访问提示404?怎么破???@(狂汗)
下拉该页面,找到 Github Pages,将 Source 下拉框的值改成 master branch,如果已经是则无需修改
上面这步没有做哦,index.html 里面也没有改成你的地址,跟着教程再做一遍吧
谢谢,搞定了
在改短链时没有下拉选择框怎么办,
找到 Github Pages,将 Source 下拉框的值改成 master branch
是否 fork 了 redirect 项目呢,把你的项目地址贴出来我看一下啊
最后访问Onedrive 网盘时出错了,提示{"errorCode":-1,"errorMessage":"User process exit when running"},这个该怎么办?
检查一下 refresh_token 和环境变量填错没有
博主,你好谢谢你的分享,如果能“创建上传回话”来上传大文件就更好了。。。。。可以上传大文件吗?
项目里我的代码不到 1%,有需求请到 Github 向主要作者提哈https://github.com/Tai7sy/OneDrive_SCF
请问怎么替换index.php文件啊
用记事本打开复制粘贴@(你懂的)
感谢回复,弄好之后,不知道真懂还是假懂的客服提醒我说,就算我上传文件到网盘属于外网流量会后收费,所以想问下这个免费额度究竟包括哪些流量,适合将大量资源共享出来让多人下载吗
客服不是专门搞技术的,不可能知道每个应用的原理,放心分享就行了,SCF 只负责解析直链并返回,所以只扣少量的 HTTP 请求和 HTML 响应流量。
万分感谢
再想问下博主,您的网盘播放器是怎么设置的,我感觉原生的播放器播放速度好慢啊,特别是开头缓冲时间太久了@(乖)
用这个 [文件](https://disk.ml/Linux/Sources/OD-SCF/index.php/preview) 替换 `index.php` 就行了,记得把 `refresh_token` 换成你的,不过速度可能并不会提升@(捂嘴笑)
https://disk.ml/Linux/Sources/OD-SCF/index.php/
好滴!请问博主是不是网盘的域名用了cdn?怎么那么快?@(你懂的)
没有,可能我用的第一版功能少吧
博主,我今天安装解析到域名后出现:{"message":"There is no api match uri '\/' host 'cmzx.ecut.cloud'"} 您知道怎么回事吗?哪个步骤出问题了呢?@(乖)
CNAME 没问题,[自定义路径映射] 或者 [ 前端配置 ] 的路径错了,再仔细看一遍文章的自定义域名部分哈
你好呀,为什么“将网址栏的 localhost 替换为 函数 API 网关访问路径 后回车。”这一步回车之后,还是提示我要“get a refresh_token” @(乖)
只替换 localhost,后面的路径和参数都要保留哦
现在我点开"get a refresh _token"跳出的网页不会再跳转到微软登录界面 而是提示找不到网页"http://localhost/authorization_code?error=access_denied&error_description=“@(惊哭)
在隐身模式里面打开试试哦
@(委屈)
解决不了吗,要不然你加我 QQ,和邮箱同号::quyin:1huaji::
LL,搭好了,但我好像不会用,它没有上传的按钮欸,还有就是腾讯云里环境变量,sitename啊那些,填写好了,但是点击保存没有反应@(啊)。有没有什么办法在index里面添加进去呢? 谢谢啊
上传按钮需要先登录,如果网盘里什么都没有好像也无法上传。不过建议使用官方网页或客户端管理文件,该页面仅做分享使用。环境变量不保存可能有两个原因:1. 浏览器插件冲突,一般使用隐私模式打开即可。2. 腾讯云服务器响应较慢,点击保存后等待 1 分钟左右看看。
开隐私模式秒保存,为什么啊啊啊啊啊,折腾了好久。@(真棒)谢谢谢谢欸嘿
hhhhh,我在腾讯云有ssl和备案好的域名,一个小时就搞定了,吹爆博主!@(吐舌)
自定义域名怎么搞
就按照博主的教程啊,自己创一个cname域名解析,绑定就好
想问下,这个可以让他人注册使用吗?还是只能我自己上传别人只能下载?@(勉强)
目前不能注册,任何人使用管理员密码登录可以上传 4M 以内的文件。所以一般是所有者使用客户端上传,访问者只能下载。
还想问下博主,这个能不能设置私密文件夹,要密码才能看的那种?@(太开心)
可以的,如果你添加了文中的几个环境变量,那么某个在文件夹下新建一个 .password 文件,用记事本把密码写进去保存就可以加密这个文件夹了。
自定义域名出错了,提示{"message":"There is no api match env_mapping '\/'"}
不知道是哪一步的问题
自定义域名加上环境名就可以访问,直接域名不行
搞定了
是我疏忽了,现已加上。@(太开心)
自定义域名怎么搞
修改路径就好,这样就不用域名加路径访问了,博主已经改了教程,按照他说的弄就行
我这里修改了路径之后,自定义域名还是没办法打开,不知道为啥
纠正一下:腾讯云及其他云申请域名证书不需要将域名转入至其平台
感谢提醒,是我孤陋寡闻了,不过阿里的函数服务是支持证书上传的。另外,不睡了吗@(滑稽)