上傳和下載地址適合瀏覽器直傳、把結果檔案交給未持有 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。