轻松实现函数计算文件上传下载
这是一个包含了函数计算每种 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: ANONYMOUS HttpTrigger httpTrigger of file-transfer/python was registered url: http://localhost:8000/2016-08-15/proxy/file-transfer/python methods: [ 'GET', 'POST' ] authType: ANONYMOUS HttpTrigger httpTrigger of file-transfer/java was registered url: http://localhost:8000/2016-08-15/proxy/file-transfer/java methods: [ 'GET', 'POST' ] authType: ANONYMOUS HttpTrigger httpTrigger of file-transfer/php was registered url: http://localhost:8000/2016-08-15/proxy/file-transfer/php methods: [ 'GET', 'POST' ] authType: ANONYMOUS function 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 末尾加上一个/
。
不同语言的示例代码
已知问题
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里云日志服务字段包含固定字符告警配置示例
概述 日志服务支持根据仪表盘中的查询图表设置告警,实现实时的服务状态监控。日志服务的告警功能基于仪表盘中的查询图表实现。在日志服务控制台查询页面或仪表盘页面设置告警规则,并指定告警规则的配置、检查条件和通知方式。本文以用户常见的需求:如果某个字段包含某一段固定字符“xxxx”,则告警。介绍整个告警过程的配置实现。 Step by Step 1、日志服务管理控制台创建project 和 logstore 2、配置索引 3、使用Java SDK写入日志,参考链接 import com.aliyun.openservices.log.Client; import com.aliyun.openservices.log.common.LogItem; import com.aliyun.openservices.log.exception.LogException; import com.aliyun.openservices.log.request.PutLogsRequest; import java.util.Date; import java.util.Vector; public c...
- 下一篇
由Session到Token的身份验证演变过程理解Session、Cookie、Token
本文将从Web应用 由传统身份验证到基于Token的身份验证的演变过程的角度,介绍Session、Cookie、Token。 很久以前,Web 应用基本用作文档的浏览,如网络黄页。既然仅仅是浏览,因此服务器不需要记录具体用户在某一段时间里都浏览了哪些文档,每次请求都是一个新的HTTP协议,对服务器来说都是全新的。 基于Session的身份验证 随着交互式Web应用的兴起,比如,购物等需要登录的网站。引出了一个新的问题,那就是要记录哪些用户登录了系统进行了哪些操作,即要管理会话(什么是会话?简单的讲如果用户需要登录,那么就可以简单的理解为会话,如果不需要登录,那么就是简单的连接。),比如,不同用户将不同商品加入到购物车中, 也就是说必须把每个用户区分开。因为HTTP请求是无状态的,所以想出了一个办法,那就是给每个用户配发一个会话标识(Session id),简单的讲就是一个既不会重复,又不容易被找到规律以仿造的随机字符串,使得每个用户的收到的会话标识都不一样, 每次用户从客户端向服务端发起HTTP请求的时候,把这个字符串给一并发送过来, 这样服务端就能区分开谁是谁了,至于客户端(浏览器)...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6