轻松实现函数计算文件上传下载

本文涉及的产品
简介: 这是一个包含了函数计算每种 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 的情况,可以考虑如下方法:

  1. 分片上传,把文件切分成小块,上传以后再拼接起来。
  2. 借助于 OSS,将文件先上传 OSS,函数从 OSS 上下载文件,处理完以后回传 OSS。
  3. 借助于 NAS,将大文件放在 NAS 网盘上,函数可以像读写普通文件系统一样访问 NAS 网盘的文件。

快速开始

安装依赖

在开始之前请确保开发环境已经安装了如下工具:

构建并启动函数

克隆代码

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 /uploadmultipart/form-data 格式上传文件

    • fileContent 作为文件字段
    • fileName 作为文件名字段
  • GET /download?filename=xxxapplication/octet-stream 格式返回文件内容。

此外为了能正确的计算相对路径,在访问根路径时如果不是以/结尾,都会触发一个 301 跳转,在 URL 末尾加上一个/

不同语言的示例代码

已知问题

  1. 文件大小限制
  2. fun local 实现存在已知问题,上传过大的文件会自动退出,未来的版本会修复。
  3. 部署到线上需要绑定自定义域名才能使用,否则 HTML 文件在浏览器中会被强制下载而不是直接渲染。
相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
6月前
|
算法 前端开发 Unix
前端算法-简化路径
前端算法-简化路径
|
1月前
|
人工智能 Serverless API
函数计算常见问题之函数计算和云上安装依赖的关系是什么
函数计算(Function Compute, FC)是阿里云提供的无服务器计算服务,它允许用户在无需管理服务器的情况下运行代码,但在配置和执行过程中可能遇到报错,本合集致力于梳理FC服务中的常见报错和配置问题,并提供解决方案,帮助用户优化函数执行环境。
38 1
|
1月前
|
Serverless 数据库连接 数据库
函数计算常见问题之框架报错如何解决
函数计算(Function Compute, FC)是阿里云提供的无服务器计算服务,它允许用户在无需管理服务器的情况下运行代码,但在配置和执行过程中可能遇到报错,本合集致力于梳理FC服务中的常见报错和配置问题,并提供解决方案,帮助用户优化函数执行环境。
31 0
函数计算常见问题之框架报错如何解决
|
3月前
|
存储 监控 数据挖掘
阿里云函数计算的日志可以通过两种方式进行处理
【1月更文挑战第16天】【1月更文挑战第76篇】阿里云函数计算(Function Compute)的日志可以通过两种方式进行处理
56 1
|
9月前
|
监控 数据可视化 Serverless
函数计算常用的简化配置的方式
函数计算常用的简化配置的方式
735 2
|
10月前
|
JSON JavaScript 中间件
DjangoVue前后分离_后端跨域传递参数(搭建博客第二步)
DjangoVue前后分离_后端跨域传递参数(搭建博客第二步)
97 0
|
11月前
|
前端开发 JavaScript 数据库
(简易)测试数据构造平台:37 - 复杂工具(页面自动获取数据模块后端)
(简易)测试数据构造平台:37 - 复杂工具(页面自动获取数据模块后端)
|
11月前
|
JavaScript 前端开发 数据库
(简易)测试数据构造平台:36 - 复杂工具(页面自动获取数据模块)
(简易)测试数据构造平台:36 - 复杂工具(页面自动获取数据模块)
|
12月前
|
消息中间件 JavaScript 小程序
接了个变态需求:给定一个接口,要用户自定义动态实现并上传热部署,怎么搞?
接了个变态需求:给定一个接口,要用户自定义动态实现并上传热部署,怎么搞?
|
Serverless
大依赖部署——解决函数计算上传代码包大小受限常见的解决方案
大依赖部署——解决函数计算上传代码包大小受限常见的解决方案自制脑图
1933 0
大依赖部署——解决函数计算上传代码包大小受限常见的解决方案

相关产品

  • 函数计算