91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行Serverless文件上傳優化

發布時間:2021-12-16 12:02:11 來源:億速云 閱讀:176 作者:柒染 欄目:云計算

如何進行Serverless文件上傳優化,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

前言

當開發者需要搭建一個 Web 應用或移動端程序時,可以使用云函數作為后端服務,由 API 網關接收客戶端請求,并觸發云函數處理。這樣的 Serverless 架構具備簡單便捷、可彈性擴展、高可用等優勢,正成為越來越多人的共同選擇。

但開發者在搭建應用時,難免會遇到上傳文件的場景,如 App 上傳用戶頭像、個人博客文章圖片、網站評論圖片,這些都需要上傳文件到后端。如果您的業務托管在主機上,上傳文件往往不受限制,可使用 multipart/form-data 方式直接上傳文件;但在 Serverless架構下,由于 API 網關和云函數之間只支持傳輸 JSON 數據,使用傳統方式上傳文件較為困難,一般的解決方案是由客戶端通過 Base64 等算法,先將文件從二進制轉換為字符后再進行上傳。

近期騰訊云 Serverless 團隊優化了上傳文件體驗,上線了 API 網關 Base64 編碼功能,上傳文件時原本由客戶端做的 Base64 編碼過程變為由 API 網關進行,這使得開發者無需改動客戶端代碼即可將二進制文件上傳至云函數 SCF。同時,前端開發中一般可基于 Base64 格式完成圖片的存儲和展現,使得該功能對前端開發者來說非常友好。

下面對 Serverless 和傳統方式 multipart 上傳多文件的過程進行了對比,并介紹了Base64 編碼功能的配置方式。

請求過程對比

傳統方式上傳文件過程

如果您的后端服務托管在云主機上,一般上傳文件的請求過程如下:

  • 第一步:客戶端可直接使用 multipart/form-data 方式上傳文件;

  • 第二步:在后端服務中獲取二進制文件。

以下是一段客戶端上傳兩張圖片 pic-1.jpg 和 pic-2.jpg 到后端服務的 Python 3 參考代碼:

import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
from requests_toolbelt.multipart import decoder
 
m = MultipartEncoder(
    fields=[
           ('files[]',('file.jpg', open('pic-2.jpg', 'rb'), 'image/jpeg')),
           ('files[]',('file2.jpg', open('pic-1.jpg', 'rb'), 'image/jpeg')),
           ]
    )

res = requests.post(url='https://yourwebsite.com/upload',
                    data=m,
                    headers={'Content-Type': m.content_type})
json = res.json()
print(json)

Serverless 上傳文件過程

如何進行Serverless文件上傳優化

如圖是采用 API 網關結合云函數,開啟 Base64 功能后上傳文件的請求過程:

  1. 客戶端可直接使用 multipart/form-data 方式上傳文件;

  2. 在云函數中獲取經過 Base64 編碼的文本。

對比結論

通過以上兩種方式的對比,我們不難看出,Base64編碼功能的最大優勢在于使 Serverless 獲得了和傳統方式完全一致的上傳文件體驗,可直接使用傳統方式的客戶端代碼進行上傳。

另外,在云函數中獲取了經過 Base64 編碼的文本后,您只需對 event.body 進行解碼,就可以得到二進制文件了。以下是一段在云函數中解碼多文件的 Python 3 參考代碼:

# -*- coding: utf-8 -*-

import sys
import logging
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
from requests_toolbelt.multipart import decoder
import base64
import json

print('Loading function')

logger = logging.getLogger()

def main_handler(event, context):
    logger.info("start main handler")

    content_type_header = event['headers']['content-type']
    body = event['body']
    is_me = base64.b64decode(body)
    for part in decoder.MultipartDecoder(is_me, content_type_header).parts:
        print(part.content)

注意:需要使用層或上傳 zip 包的形式安裝相關依賴。

實戰配置

為滿足不同場景的要求,Base64 編碼功能還提供了“全部觸發”和“Header 觸發”兩種觸發方式供您選擇:

  • 全部觸發:API 開啟全部觸發后,每次請求的請求內容都會被 Base64 編碼后再傳遞給云函數。

  • Header 觸發:API 開啟 Header 觸發后,必須配置觸發規則。API 網關將根據觸發規則對請求頭進行校驗,只有擁有特定 Content-Type 或 Accept 請求頭的請求會被 Base64 編碼后再傳遞給云函數,不滿足條件的請求將不進行 Base64 編碼,直接傳遞給云函數。

以下將分別敘述兩種觸發方式的配置過程:

配置全部觸發

  1. 登錄 API 網關控制臺 ,在左側導航欄單擊【服務】。

  2. 在服務列表中,單擊目標服務的服務 ID,查看 API 列表。

  3. 單擊【新建】,填寫 API 前端配置,單擊【下一步】。

  4. API 后端類型選擇【云函數SCF】,勾選“Base64編碼”,完成后續配置流程。此時創建的 API 已經開啟了 Base64 編碼,并默認為“全部觸發”。

如何進行Serverless文件上傳優化

配置 Header 觸發

  1. 登錄 API 網關控制臺 ,在左側導航欄單擊【服務】。

  2. 在服務列表中,單擊目標服務的服務 ID,查看 API 列表。

  3. 在 API 列表中,單擊目標 API 的 API ID(目標 API 必須是后端對接 SCF 的 API),即可查看 API 詳情頁。 在 API 詳情頁中,單擊【基礎配置】標簽頁,找到【Base64編碼】配置項。

  4. 單擊"Base64"后的【編輯】,選擇觸發方式為【Header觸發】。單擊【添加觸發規則】,選擇參數并填寫參數值。

  5. 確認配置信息無誤后,最后單擊【保存】即可。

如何進行Serverless文件上傳優化

關于如何進行Serverless文件上傳優化問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

马关县| 南靖县| 巴彦淖尔市| 鞍山市| 右玉县| 桓仁| 徐闻县| 嘉祥县| 秀山| 宝丰县| 永靖县| 辽中县| 乡城县| 达尔| 丹阳市| 武陟县| 美姑县| 会泽县| 博野县| 磐石市| 福鼎市| 五指山市| 武平县| 定远县| 新昌县| 苏州市| 滦平县| 保德县| 延庆县| 云龙县| 枣庄市| 杭锦后旗| 正定县| 枣阳市| 淳安县| 府谷县| 新田县| 阿拉善左旗| 石河子市| 华阴市| 滦平县|