files.read() メソッドを使用して、サンドボックスからデータをダウンロードできます。
import fs from 'fs'
import { Sandbox } from 'novita-sandbox/code-interpreter'
const sandbox = await Sandbox.create()
// Create a file in the sandbox for testing
const filePathInSandbox = '/tmp/test-file'
await sandbox.files.write(filePathInSandbox, "test-file-content")
// Read file from sandbox
const content = await sandbox.files.read(filePathInSandbox)
// Write file to local filesystem
const localFilePath = './local-test-file'
fs.writeFileSync(localFilePath, content)
await sandbox.kill()
from novita_sandbox.code_interpreter import Sandbox
sandbox = Sandbox.create()
# Create a file in the sandbox for testing
file_path_in_sandbox = '/tmp/test-file'
sandbox.files.write(file_path_in_sandbox, "test-file-content")
# Read file from sandbox
content = sandbox.files.read(file_path_in_sandbox)
# Write file to local filesystem
local_file_path = './local-test-file'
with open(local_file_path, 'w') as file:
file.write(content)
sandbox.kill()
事前署名付き URL でダウンロード
事前署名付きのダウンロード URL を使用すると、Web ブラウザなど、Novita SDK の認証情報を保持しない環境から、ユーザーが安全にファイルをダウンロードできます。secure: true オプションを指定してサンドボックスを作成し、信頼できるバックエンドで SDK を使用してダウンロード URL を生成します。アプリケーションによって承認されたユーザーにのみ返し、有効期限は短く設定してください。この URL は、有効期限が切れるまで一時的な bearer 認証情報として機能します。
import fs from 'fs'
import { Sandbox } from 'novita-sandbox/code-interpreter'
const sandbox = await Sandbox.create({ secure: true })
// Create a test file in the sandbox (requires SDK authentication)
const filePathInSandbox = '/tmp/test-file'
await sandbox.files.write(filePathInSandbox, 'test-file-content')
// Generate pre signed download URL (valid for 120 seconds, optional)
const publicDownloadUrl = await sandbox.downloadUrl(filePathInSandbox, {
useSignatureExpiration: 120, // optional, in seconds
})
// Simulate "browser/unauthorized environment": without API key, directly GET download
const res = await fetch(publicDownloadUrl)
if (!res.ok) {
throw new Error(`Download failed: ${res.status} ${await res.text()}`)
}
const content = await res.text()
// Write to local file
const localFilePath = './local-test-file'
fs.writeFileSync(localFilePath, content)
console.log(content)
await sandbox.kill()
from pathlib import Path
import requests
from novita_sandbox.code_interpreter import Sandbox
sandbox = Sandbox.create(secure=True)
# Create a test file in the sandbox (requires SDK authentication)
file_path_in_sandbox = '/tmp/test-file'
sandbox.files.write(file_path_in_sandbox, 'test-file-content')
# Generate pre signed download URL (valid for 120 seconds, optional)
signed_url = sandbox.download_url(
path=file_path_in_sandbox,
use_signature_expiration=120 # optional, in seconds
)
# Simulate "browser/unauthorized environment": without API key, directly GET download
response = requests.get(signed_url, timeout=60)
response.raise_for_status()
content = response.text
# Write to local file
local_file_path = Path('./local-test-file')
local_file_path.write_text(content)
print(content)
sandbox.kill()