天天看點

輕松實作函數計算檔案上傳下載下傳使用限制快速開始接口說明不同語言的示例代碼已知問題招聘

這是一個包含了 函數計算 每種 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 /upload

    multipart/form-data

    格式上傳檔案
    • fileContent

      作為檔案字段
    • fileName

      作為檔案名字段
  • GET /download?filename=xxx

    application/octet-stream

    格式傳回檔案内容。

此外為了能正确的計算相對路徑,在通路根路徑時如果不是以

/

結尾,都會觸發一個 301 跳轉,在 URL 末尾加上一個

/

不同語言的示例代碼

已知問題

  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 與雲原生技術棧發揮出真正的價值和能量;
  2. 研發多環境複雜應用傳遞核心技術;結合阿裡與生态中的核心業務場景,打造多環境複雜應用傳遞的業界标準與核心依賴(對标 Google Cloud Anthos 和 Microsoft Azure Arc );
  3. 雲原生應用平台核心産品及後端架構設計與開發工作;在生态核心技術與前沿架構的加持下,在世界級雲廠商的平台場景中,用技術打造持續的雲産品生命力與競争力;
  4. 持續推動阿裡經濟體應用平台架構演進,包括 Serverless 基礎設施、标準雲原生标準 PaaS 建構、新一代應用傳遞體系建構等核心技術工作。

技術要求:Go/Rust/Java/C++,Linux,分布式系統

履歷送出

lei.zhang AT

alibaba-inc.com
阿裡巴巴雲原生 關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的技術圈。”