简介:这是一个包含了函数计算每种 Runtime 结合 HTTP Trigger 实现文件上传和文件下载的示例集。我们知道不同语言在处理 HTTP 协议上传下载时都有很多中方法和社区库,特别是结合函数计算的场景,开发人员往往需要耗费不少精力去学习和尝试。本示例集编撰的目的就是节省开发者甄别的精力和时间,为每种语言提供一种有效且符合社区最佳实践的方法,可以拿来即用。

这是一个包含了函数计算每种 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 网盘的文件。

快速开始

安装依赖

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

  • docker
  • funcraft
  • git
  • make

构建并启动函数

克隆代码:

git clone https://github.com/vangie/fc-file-transfer

本地启动函数:

$ make start
...
HttpTrigger httpTrigger of file-transfer/nodejs was registeredurl: http://localhost:8000/2016-08-15/proxy/file-transfer/nodejsmethods: [ 'GET', 'POST' ]authType: ANONYMOUS
HttpTrigger httpTrigger of file-transfer/python was registeredurl: http://localhost:8000/2016-08-15/proxy/file-transfer/pythonmethods: [ 'GET', 'POST' ]authType: ANONYMOUS
HttpTrigger httpTrigger of file-transfer/java was registeredurl: http://localhost:8000/2016-08-15/proxy/file-transfer/javamethods: [ 'GET', 'POST' ]authType: ANONYMOUS
HttpTrigger httpTrigger of file-transfer/php was registeredurl: http://localhost:8000/2016-08-15/proxy/file-transfer/phpmethods: [ '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 末尾加上一个/

不同语言的示例代码

  • nodejs
  • python
  • php
  • java

已知问题

  1. 文件大小限制
  2. fun local 实现存在已知问题,上传过大的文件会自动退出,未来的版本会修复。
  3. 部署到线上需要绑定自定义域名才能使用,否则 HTML 文件在浏览器中会被强制下载而不是直接渲染。

招聘

TL;DR

阿里云 - 云原生应用平台 - 基础软件中台团队(原容器平台基础软件团队)诚邀 Kubernetes/容器/ Serverless/应用交付技术领域专家( P6-P8 )加盟。

工作年限:建议 P6-7 三年起,P8 五年起,具体看实际能力。
工作地点:

  • 国内:北京,杭州,深圳;
  • 海外:旧金山湾区、西雅图

简历立刻回复,2~3 周出结果。节后入职。

工作内容

基础产品事业部是阿里云智能事业群的核心研发部门,负责计算、存储、网络、安全、中间件、系统软件等研发。而云原生应用平台基础软件终态团队致力于打造稳定、标准、先进的云原生应用系统平台,推动行业面向云原生技术升级与革命。

在这里,既有 CNCF TOC 和 SIG 联席主席,也有 etcd 创始人、K8s Operator 创始人与 Kubernetes 核心维护成员组成的、国内最顶尖的 Kubernetes 技术团队。

在这里,你将同来自全球的云原生技术领域专家们(如 Helm 项目的创始人、Istio 项目的创始人)密切合作,在独一无二的场景与规模中从事 Kubernetes、Service Mesh、Serverless、Open Application Model ( OAM )等云计算生态核心技术的研发与落地工作,在业界标杆级的平台上,既赋能阿里巴巴全球经济体,更服务全世界的开发者用户。

  1. 以 Kubernetes 为核心,推动并打造下一代 "以应用为中心" 的基础技术体系;在阿里经济体场景中,研发和落地“以应用为中心”的基础设施架构和基于 Open Application Model ( OAM )的下一代 NoOps 体系,让 Kubernetes 与云原生技术栈发挥出真正的价值和能量;
  1. 研发多环境复杂应用交付核心技术;结合阿里与生态中的核心业务场景,打造多环境复杂应用交付的业界标准与核心依赖(对标 Google Cloud Anthos 和 Microsoft Azure Arc );
  1. 云原生应用平台核心产品及后端架构设计与开发工作;在生态核心技术与前沿架构的加持下,在世界级云厂商的平台场景中,用技术打造持续的云产品生命力与竞争力;
  1. 持续推动阿里经济体应用平台架构演进,包括 Serverless 基础设施、标准云原生标准 PaaS 构建、新一代应用交付体系构建等核心技术工作。

技术要求:Go/Rust/Java/C ,Linux,分布式系统

简历提交

lei.zhang AT alibaba-inc.com

“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”

轻松实现函数计算文件上传下载相关推荐

  1. Java实现FTP批量大文件上传下载

    用Java实现FTP批量大文件上传下载 <iframe id="I0_1416224567509" style="margin: 0px; padding: 0px ...

  2. Flex与.NET互操作(五):使用FileReference+HttpHandler实现文件上传/下载

    在Flex的应用开发中,同ASP.NET,JSP,PHP等应用一样,都会有上传/下载文件的应用需求,Flex的SDK也为我们提供了专门的类FileRefUdderence实现文件上传/下载 .Flex ...

  3. centos nfs java_CentOS下安装配置NFS并通过Java进行文件上传下载

    1:安装NFS (1)安装 yum install nfs-utils rpcbind (2)启动rpcbind服务 systemctl restart rpcbind.service 查看服务状态 ...

  4. python实现文件上传下载

    Python实现文件上传下载 环境准备: 1. 实验分两个文件,服务端(linux)和客户端(windows). 服务端运行环境:python2.x 客户端运行环境:python3.x 2. 使用了库 ...

  5. kingedit 上传php_php文件上传下载实例(实现最简单的网盘功能)

    本人是一个新手代码狗,第一次发表博客,欢迎大大们指点! 最近手头有一个文件上传下载的案例,跟大家一起分享一下作为一个新手的苦逼成长历程! 话不多说,先上代码: 一:这个是一个文件上传的html页面,小 ...

  6. 文件上传表单 上传文件的细节 文件上传下载和数据库结合

    1 文件上传表单    1)上传文件的本质是文本复制的过程    2)技术层面,在Java中一定会用到IO操作,主要以二进制方式读写    3)传统方式下,对于上传文件字段不同的浏览器有着不同的解析方 ...

  7. JSON+AJAX+ThreadLocal+文件上传下载

    文章目录 JSON和AJAX文档介绍 1. JSON介绍 1.1 JSON快速入门 1.2 JSON和字符串转换 1.2.1 JSON转字符串 1.2.2 字符串转JSON 1.2.3 JSON和字符 ...

  8. springboot:实现文件上传下载实时进度条功能【附带源码】

    0. 引言 记得刚入行的时候,做了一个文件上传的功能,因为上传时间较久,为了用户友好性,想要添加一个实时进度条,显示进度.奈何当时技术有限,查了许久也没用找到解决方案,最后不了了之. 近来偶然想到这个 ...

  9. JSP基础:(7)jsp分页与文件上传下载

    目录 1 jsp分页 1.1 定义 1.2 Servlet控制器方法 2 文件上传下载 2.1 定义 2.2 SmartUpload 2.2.1 介绍 2.2.2 SmartUpload组件-Requ ...

最新文章

  1. 下载最新版本Maven 3.3.9 ,检测安装是否成功时发现Java版本JDK却低于1.7时报错
  2. 云炬Qtpy5开发与实战笔记 3PyCharm添加PyUIC扩展——将.ui文件转换成.py文件
  3. Java多线程之一:进程与线程
  4. bl小说里面有个机器人管家_机器人也有攀登者,登顶珠峰的机器人来了!独造机器人管家...
  5. sublime自动保存(失去焦点自动保存)
  6. 字段定义_SAP 物料主数据增强自定义字段
  7. 解决php保存文件时文件名乱码问题
  8. android studio x5,android studio中使用x5 webview来读写cookies的问题
  9. ADB的下载安装和基本命令
  10. 机器学习教程 之 随机森林: 算法及其特征选择原理
  11. 2000份简历模板 唯美时尚简约个人简历模板 英文简历模板 简历封面 自荐信下载
  12. 移动光猫搭建虚拟服务器,折腾光猫/路由器[MIPS架构](1):用Samba服务器搭建家庭文件共享中心...
  13. HBase项目之微博系统
  14. blink usb无线网卡驱动 linux,blink随身wifi驱动
  15. Android MVVM框架搭建(十)Hilt、ViewBinding、Activity Result API
  16. 相关性分析的结果解读及说明
  17. python编写程序输出诗句_编程小白是这样用python把唐诗玩坏的
  18. 使用Plink对SNP数据进行质量控制
  19. 实得打印机色带芯更换
  20. caffe安装(CPU版本)window10+Anaconda3+vs2013

热门文章

  1. CSS知识点补充收集
  2. 运算符重载——关系运算符重载
  3. 不管你学的是什么专业,你都应该多少懂些管理学的...
  4. selenium-webdriver——如何在启动firefox时加载扩展
  5. bigdata learning unit two--Spark environment setting
  6. web前端基础之Bootstrap(三) - 插件
  7. BZOJ1876 SDOI2009 SuperGCD 其他
  8. 《Hadoop权威指南》读书笔记1
  9. KlayGE 4.4中渲染的改进(三):高质量无限地形
  10. 大话设计模式读书笔记10----外观模式(Facade)