全部產品
Search
文件中心

Function Compute:上傳和下載檔案

更新時間:Jul 22, 2026

上傳和下載地址適合瀏覽器直傳、把結果檔案交給未持有 SDK 鑒權資訊的環境,或把檔案交給後續系統處理。小檔案、二進位內容、流式內容和 Agent 產生代碼優先使用 sandbox.files.write() 和 sandbox.files.read()。

注意:如果要使用 sandbox.downloadUrl() 和 sandbox.uploadUrl() 返回的 URL 上傳和下載檔案,確保在建立 Sandbox 時顯式設定了 secure=false。否則,通過 URL 上傳和下載檔案仍需要請求方攜帶 X-Access-Token。

Python 樣本:

sandbox = Sandbox.create(..., secure=False)

TypeScript 樣本:

const sandbox = await Sandbox.create("code-interpreter-v1", {
  ...,
  secure: false,
});

產生下載地址

當 Sandbox 內已經組建檔案時,可以通過 sandbox.downloadUrl(path) 擷取下載地址,再由業務側把檔案交給使用者或後續系統處理。

Python 樣本:

sandbox.files.write("/tmp/result.txt", "analysis result\n")

download_url = sandbox.download_url("/tmp/result.txt")
print(download_url)

TypeScript 樣本:

await sandbox.files.write("/tmp/result.txt", "analysis result\n");

const downloadUrl = await sandbox.downloadUrl("/tmp/result.txt");
console.log(downloadUrl);

產生上傳地址

需要從瀏覽器等未持有 SDK 鑒權資訊的環境把檔案上傳到 Sandbox 時,可以先通過 sandbox.uploadUrl(path) 擷取上傳地址,再從業務側以 multipart/form-data POST 到該地址。

Python 樣本:

upload_url = sandbox.upload_url("/tmp/input.csv")
print(upload_url)

TypeScript 樣本:

const uploadUrl = await sandbox.uploadUrl("/tmp/input.csv");
console.log(uploadUrl);

瀏覽器或第三方系統拿到上傳地址後,需要用 multipart/form-data 提交檔案:

Python 樣本:

import requests

with open("input.csv", "rb") as f:
    requests.post(upload_url, files={"file": f}).raise_for_status()

TypeScript 樣本:

const form = new FormData();
form.append("file", file);

await fetch(uploadUrl, {
  method: "POST",
  body: form,
});

上傳完成後,可以在 Sandbox 內直接讀取或處理該檔案:

Python 樣本:

result = sandbox.commands.run(
    "python3 - <<'PY'\nfrom pathlib import Path\nprint(Path('/tmp/input.csv').exists())\nPY"
)
print(result.stdout.strip())

TypeScript 樣本:

const result = await sandbox.commands.run("python3 - <<'PY'\nfrom pathlib import Path\nprint(Path('/tmp/input.csv').exists())\nPY");
console.log(result.stdout.trim());

注意事項

  • 將 downloadUrl(path) 和 uploadUrl(path) 返回的地址交給未持有 SDK 鑒權資訊的環境直接存取時,需要使用 secure=false 的 Sandbox。

  • secure=false 會降低 Sandbox 暴露端點的訪問保護強度。請控制 Sandbox 生命週期、檔案路徑和資料敏感性。

  • downloadUrl(path) 和 uploadUrl(path) 產生的是指定路徑的訪問地址,使用前要確認路徑符合業務預期。

  • 不要把包含敏感性資料的上傳、下載地址寫入日誌或暴露給無關使用者。

  • 大檔案上傳後建議通過 sandbox.files.exists() 或命令檢查檔案是否可讀。

  • 檔案只在當前 Sandbox 生命週期內可用。需要長期儲存時,應寫入外部儲存。

選擇建議

  • 小檔案、文字檔、二進位內容、流式內容和 Agent 產生代碼:使用 sandbox.files.write() 和 sandbox.files.read()。

  • 瀏覽器直傳、下載結果檔案或把檔案交給未持有 SDK 鑒權資訊的環境:使用 sandbox.uploadUrl() 和 sandbox.downloadUrl(),並在建立 Sandbox 時設定 secure=false。

  • 目錄遍曆、重新命名或刪除:使用 Filesystem API。