轻松实现函数计算文件上传下载
发表于:2022-08-13 作者:安全数据网编辑
编辑最后更新 2022年08月13日,这是一个包含了函数计算每种 Runtime 结合 HTTP Trigger 实现文件上传和文件下载的示例集。每个示例包括:一个公共 HTML 页面,该页面有一个文件选择框和上传按钮,会列出已经上传的文
这是一个包含了函数计算每种 Runtime 结合 HTTP Trigger 实现文件上传和文件下载的示例集。每个示例包括:
- 一个公共 HTML 页面,该页面有一个文件选择框和上传按钮,会列出已经上传的文件,点击某个已上传的文件可以把文件下载下来;
- 支持文件上传、下载和列举的函数。
我们知道不同语言在处理 HTTP 协议上传下载时都有很多中方法和社区库,特别是结合函数计算的场景,开发人员往往需要耗费不少精力去学习和尝试。本示例集编撰的目的就是节省开发者甄别的精力和时间,为每种语言提供一种有效且符合社区最佳实践的方法,可以拿来即用。
当前已支持的 Runtime 包括:
- nodejs
- python
- php
- java
计划支持的 Runtime 包括:
- dotnetcore
不打算支持的 Runtime 包括:
- custom
使用限制
由于函数计算对于 HTTP 的 Request 和 Response 的 Body 大小限制均为 6M,所以该示例集只适用于借助函数计算上传和下载文件小于 6M 的场景。对于大于 6M 的情况,可以考虑如下方法:
- 分片上传,把文件切分成小块,上传以后再拼接起来;
- 借助于 OSS,将文件先上传 OSS,函数从 OSS 上下载文件,处理完以后回传 OSS;
- 借助于 NAS,将大文件放在 NAS 网盘上,函数可以像读写普通文件系统一样访问 NAS 网盘的文件。
快速开始
安装依赖
在开始之前请确保开发环境已经安装了如下工具:
- docker
- funcraft
- git
- make
构建并启动函数
克隆代码:
git clone https://github.com/vangie/fc-file-transfer
本地启动函数:
$ make start...HttpTrigger httpTrigger of file-transfer/nodejs was registered url: http://localhost:8000/2016-08-15/proxy/file-transfer/nodejs methods: [ 'GET', 'POST' ] authType: ANONYMOUSHttpTrigger httpTrigger of file-transfer/python was registered url: http://localhost:8000/2016-08-15/proxy/file-transfer/python methods: [ 'GET', 'POST' ] authType: ANONYMOUSHttpTrigger httpTrigger of file-transfer/java was registered url: http://localhost:8000/2016-08-15/proxy/file-transfer/java methods: [ 'GET', 'POST' ] authType: ANONYMOUSHttpTrigger httpTrigger of file-transfer/php was registered url: http://localhost:8000/2016-08-15/proxy/file-transfer/php methods: [ 'GET', 'POST' ] authType: ANONYMOUSfunction compute app listening on port 8000!
make start
命令会调用 Makefile 文件中的指令,通过 fun local
在本地的 8000 端口开放 HTTP 服务,控制台会打印出每个 HTTP Trigger 的 URL 、支持的 HTTP 方法,以及认证方式。
效果演示
上面四个 URL 地址随便选一个在浏览器中打开示例页面。
接口说明
所有示例都实现了下述四个 HTTP 接口:
GET /
返回文件上传 Form 的 HTML 页面GET /list
以 JSON 数组形式返回文件列表POST /upload
以multipart/form-data
格式上传文件fileContent
作为文件字段fileName
作为文件名字段
GET /download?filename=xxx
以application/octet-stream
格式返回文件内容。
此外为了能正确的计算相对路径,在访问根路径时如果不是以/
结尾,都会触发一个 301 跳转,在 URL 末尾加上一个/
。
不同语言的示例代码
- nodejs
- python
- php
- java
已知问题
- 文件大小限制
- fun local 实现存在已知问题,上传过大的文件会自动退出,未来的版本会修复。
- 部署到线上需要绑定自定义域名才能使用,否则 HTML 文件在浏览器中会被强制下载而不是直接渲染。
"阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。"
c语言网络技术和编程语言总结
c语言对应的三级考试网络技术
网站服务器后台如何加防护密码
c语言软件开发步骤
c语言中网络技术知识点
服务器对权限提升的防护措施
怎么在阿里云租服务器
黑苹果能做web服务器吗
c语言和网络技术哪个好考
云服务器2核4G是什么性能
发信的smtp服务器
小程序随机获取云数据库
网络安全攻防知识点
cs互联网服务器密码
上海服务器电源特点
钱塘新区智慧工会软件开发
企业网络技术最新
数据库应用系统简称为( )
互联网大会网络安全问题
lol选择完英雄就卡在服务器上
天津科技大学软件开发分数线
个人网络安全培训课件
台版bomtoon服务器地址
lol韩服服只有一个服务器吗
单位安全风险数据库
IXF文件数据库
关系数据库系统的结构
神经网络技术的基本原理
有关数据库的设计方案
ps5 怎么改服务器
网络安全管理需要学的书籍
群晖做服务器安全么
网络安全关系你我
网络安全教育300
为儿童设置网络安全密码
上海鸿企网络技术有限公司
数据库中空值是指什么
数据库构建文档
一个数据库的数据是什么
网络安全保障税务信息化发展