在調用多模態、映像、視頻或音頻模型時,通常需要傳入檔案的 URL。為此,阿里雲百鍊提供了免費臨時儲存空間,您可將本地檔案上傳至該空間並獲得 URL(有效期間為 48 小時)。
本文檔僅適用於“中國大陸(北京)”地區。如需使用模型,需使用“中國大陸(北京)”地區的API Key。
使用限制
檔案與模型繫結:檔案上傳時必須指定模型名稱,且該模型須與後續調用的模型一致,不同模型無法共用檔案。此外,不同模型對檔案大小有不同限制,超出限制將導致上傳失敗。
檔案與主帳號綁定:檔案上傳與模型調用所使用的 API Key 必須屬於同一個阿里雲主帳號,且上傳的檔案僅限該主帳號及其對應模型使用,無法被其他主帳號或其他模型共用。
檔案有效期間限制:檔案上傳後有效期間48小時,逾時後檔案將被自動清理,請確保在有效期間內完成模型調用。
檔案使用限制:檔案一旦上傳,不可查詢、修改或下載,僅能通過URL參數在模型調用時使用。
檔案上傳限流:檔案上傳憑證介面的調用限流按照“阿里雲主帳號+模型”維度為100QPS,超出限流將導致請求失敗。
臨時 URL 有效期間48小時,到期後無法使用,請勿用於生產環境。
檔案上傳憑證介面限流為 100 QPS 且不支援擴容,請勿用於生產環境、高並發及壓測情境。
生產環境建議使用阿里雲OSS 等穩定儲存,確保檔案長期可用並規避限流問題。
使用方式
步驟一:擷取臨時URL
方式一:通過代碼上傳檔案
本文提供 Python 和 Java 範例程式碼,簡化上傳檔案操作。您只需指定模型和待上傳的檔案,即可擷取臨時URL。
前提條件
在調用前,您需要準備工作:擷取與配置 API Key,再配置API Key到環境變數(準備下線,併入配置 API Key)。
範例程式碼
Python
環境配置
推薦使用Python 3.8及以上版本。
請安裝必要的依賴包。
pip install -U requests輸入參數
api_key:阿里雲百鍊API KEY。
model_name:指定檔案將要用於哪個模型,如
qwen-vl-plus。file_path:待上傳的本地檔案路徑(圖片、視頻等)。
import os
import requests
from pathlib import Path
from datetime import datetime, timedelta
def get_upload_policy(api_key, model_name):
"""擷取檔案上傳憑證"""
url = "https://dashscope.aliyuncs.com/api/v1/uploads"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
params = {
"action": "getPolicy",
"model": model_name
}
response = requests.get(url, headers=headers, params=params)
if response.status_code != 200:
raise Exception(f"Failed to get upload policy: {response.text}")
return response.json()['data']
def upload_file_to_oss(policy_data, file_path):
"""將檔案上傳到臨時儲存OSS"""
file_name = Path(file_path).name
key = f"{policy_data['upload_dir']}/{file_name}"
with open(file_path, 'rb') as file:
files = {
'OSSAccessKeyId': (None, policy_data['oss_access_key_id']),
'Signature': (None, policy_data['signature']),
'policy': (None, policy_data['policy']),
'x-oss-object-acl': (None, policy_data['x_oss_object_acl']),
'x-oss-forbid-overwrite': (None, policy_data['x_oss_forbid_overwrite']),
'key': (None, key),
'success_action_status': (None, '200'),
'file': (file_name, file)
}
response = requests.post(policy_data['upload_host'], files=files)
if response.status_code != 200:
raise Exception(f"Failed to upload file: {response.text}")
return f"oss://{key}"
def upload_file_and_get_url(api_key, model_name, file_path):
"""上傳檔案並擷取URL"""
# 1. 擷取上傳憑證,上傳憑證介面有限流,超出限流將導致請求失敗
policy_data = get_upload_policy(api_key, model_name)
# 2. 上傳檔案到OSS
oss_url = upload_file_to_oss(policy_data, file_path)
return oss_url
# 使用樣本
if __name__ == "__main__":
# 從環境變數中擷取API Key 或者 在代碼中設定 api_key = "your_api_key"
api_key = os.getenv("DASHSCOPE_API_KEY")
if not api_key:
raise Exception("請設定DASHSCOPE_API_KEY環境變數")
# 設定model名稱
model_name="qwen-vl-plus"
# 待上傳的檔案路徑
file_path = "/tmp/cat.png" # 替換為實際檔案路徑
try:
public_url = upload_file_and_get_url(api_key, model_name, file_path)
expire_time = datetime.now() + timedelta(hours=48)
print(f"檔案上傳成功,有效期間為48小時,到期時間: {expire_time.strftime('%Y-%m-%d %H:%M:%S')}")
print(f"臨時URL: {public_url}")
print("使用該URL時請參考文檔的步驟二,否則可能出錯。")
except Exception as e:
print(f"Error: {str(e)}")輸出樣本
檔案上傳成功,有效期間為48小時,到期時間: 2024-07-18 17:36:15
臨時URL: oss://dashscope-instant/xxx/2024-07-18/xxx/cat.png
使用該URL時請參考文檔的步驟二,否則可能出錯。Java
環境配置
推薦使用JDK 1.8及以上版本。
請在Maven專案的
pom.xml檔案中匯入以下依賴。
<dependencies>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20230618</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.13</version>
</dependency>
</dependencies>輸入參數
apiKey:阿里雲百鍊API KEY。
modelName:指定檔案將要用於哪個模型,如
qwen-vl-plus。filePath:待上傳的本地檔案路徑(圖片、視頻等)。
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.HttpStatus;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class PublicUrlHandler {
private static final String API_URL = "https://dashscope.aliyuncs.com/api/v1/uploads";
public static JSONObject getUploadPolicy(String apiKey, String modelName) throws IOException {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpGet httpGet = new HttpGet(API_URL);
httpGet.addHeader("Authorization", "Bearer " + apiKey);
httpGet.addHeader("Content-Type", "application/json");
String query = String.format("action=getPolicy&model=%s", modelName);
httpGet.setURI(httpGet.getURI().resolve(httpGet.getURI() + "?" + query));
try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
if (response.getStatusLine().getStatusCode() != 200) {
throw new IOException("Failed to get upload policy: " +
EntityUtils.toString(response.getEntity()));
}
String responseBody = EntityUtils.toString(response.getEntity());
return new JSONObject(responseBody).getJSONObject("data");
}
}
}
public static String uploadFileToOSS(JSONObject policyData, String filePath) throws IOException {
Path path = Paths.get(filePath);
String fileName = path.getFileName().toString();
String key = policyData.getString("upload_dir") + "/" + fileName;
HttpPost httpPost = new HttpPost(policyData.getString("upload_host"));
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("OSSAccessKeyId", policyData.getString("oss_access_key_id"));
builder.addTextBody("Signature", policyData.getString("signature"));
builder.addTextBody("policy", policyData.getString("policy"));
builder.addTextBody("x-oss-object-acl", policyData.getString("x_oss_object_acl"));
builder.addTextBody("x-oss-forbid-overwrite", policyData.getString("x_oss_forbid_overwrite"));
builder.addTextBody("key", key);
builder.addTextBody("success_action_status", "200");
byte[] fileContent = Files.readAllBytes(path);
builder.addBinaryBody("file", fileContent, ContentType.DEFAULT_BINARY, fileName);
httpPost.setEntity(builder.build());
try (CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = httpClient.execute(httpPost)) {
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
throw new IOException("Failed to upload file: " +
EntityUtils.toString(response.getEntity()));
}
return "oss://" + key;
}
}
public static String uploadFileAndGetUrl(String apiKey, String modelName, String filePath) throws IOException {
JSONObject policyData = getUploadPolicy(apiKey, modelName);
return uploadFileToOSS(policyData, filePath);
}
public static void main(String[] args) {
// 擷取環境變數中的API密鑰
String apiKey = System.getenv("DASHSCOPE_API_KEY");
if (apiKey == null || apiKey.isEmpty()) {
System.err.println("請設定DASHSCOPE_API_KEY環境變數");
System.exit(1);
}
// 模型名稱
String modelName = "qwen-vl-plus";
//替換為實際檔案路徑
String filePath = "src/main/resources/tmp/cat.png";
try {
// 檢查檔案是否存在
File file = new File(filePath);
if (!file.exists()) {
System.err.println("檔案不存在: " + filePath);
System.exit(1);
}
String publicUrl = uploadFileAndGetUrl(apiKey, modelName, filePath);
LocalDateTime expireTime = LocalDateTime.now().plusHours(48);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println("檔案上傳成功,有效期間為48小時,到期時間: " + expireTime.format(formatter));
System.out.println("臨時URL: " + publicUrl);
System.out.println("使用該URL時請參考文檔的步驟二,否則可能出錯。");
} catch (IOException e) {
System.err.println("Error: " + e.getMessage());
}
}
}輸出樣本
檔案上傳成功,有效期間為48小時,到期時間: 2024-07-18 17:36:15
臨時URL: oss://dashscope-instant/xxx/2024-07-18/xxx/cat.png
使用該URL時請參考文檔的步驟二,否則可能出錯。方式二:通過命令列工具上傳檔案
對於熟悉命令列的開發人員,可使用DashScope提供的命令列工具來上傳檔案。執行命令後,即可擷取臨時URL。
前提條件
環境準備:推薦使用 Python 3.8 及以上版本。
擷取API-KEY:在調用前,您需要準備工作:擷取與配置 API Key。
安裝SDK:請確保DashScope Python SDK 版本不低於
1.24.0。執行以下命令進行安裝或升級:
pip install -U dashscope方法1:使用環境變數(推薦)
此方法更安全,可以避免API-KEY在命令歷史或指令碼中明文暴露。
前提條件:請確保已配置API Key到環境變數(準備下線,併入配置 API Key)。
執行上傳命令:
dashscope oss.upload --model qwen-vl-plus --file cat.png輸出樣本:
Start oss.upload: model=qwen-vl-plus, file=cat.png, api_key=None
Uploaded oss url: oss://dashscope-instant/xxxx/2025-08-01/xxxx/cat.png方法2:通過命令列參數指定API-KEY(臨時使用)
執行上傳命令:
dashscope oss.upload --model qwen-vl-plus --file cat.png --api_key sk-xxxxxxx輸出樣本:
Start oss.upload: model=qwen-vl-plus, file=cat.png, api_key=sk-xxxxxxx
Uploaded oss url: oss://dashscope-instant/xxx/2025-08-01/xxx/cat.png命令列參數說明
參數 | 是否必須 | 說明 | 樣本 |
oss.upload | 是 | dashscope的子命令,用於執行檔案上傳操作。 | oss.upload |
--model | 是 | 指定檔案將要用於哪個模型。 | qwen-vl-plus |
--file | 是 | 本地檔案的路徑。可以是相對路徑或絕對路徑。 | cat.png,/data/img.jpg |
--api_key | 否 | 阿里雲百鍊API-KEY。如已配置環境變數,無需填寫此參數。 | sk-xxxx |
步驟二:使用臨時URL進行模型調用
使用限制
檔案格式:臨時URL須通過上述方式產生,且以
oss://為首碼的URL字串。檔案未到期:檔案URL仍在上傳後的48小時有效期間內。
模型一致:模型調用所使用的模型必須與檔案上傳時指定的模型完全一致。
帳號一致:模型調用的API KEY必須與檔案上傳時使用的API KEY同屬一個阿里雲主帳號。
前提條件
在調用前,您需要開通模型服務並擷取API Key,再配置API Key到環境變數(準備下線,併入配置 API Key)。
方式一:通過HTTP調用
通過curl、Postman或任何其他HTTP用戶端直接調用API,則必須遵循以下規則:
使用臨時URL,必須在請求的Header中添加參數:
X-DashScope-OssResourceResolve: enable。若缺失此Header,系統將無法解析
oss://連結,請求將失敗,報錯資訊請參考錯誤碼。
請求樣本
本樣本為調用 qwen-vl-plus 模型識別圖片內容。
請將 oss://...替換為真實的臨時 URL,否則請求將失敗。
curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-H 'X-DashScope-OssResourceResolve: enable' \
-d '{
"model": "qwen-vl-plus",
"messages": [{
"role": "user",
"content":
[{"type": "text","text": "這是什麼"},
{"type": "image_url","image_url": {"url": "oss://dashscope-instant/xxx/2024-07-18/xxxx/cat.png"}}]
}]
}'響應樣本
{
"choices": [
{
"message": {
"content": "這是一張描繪一隻白色貓咪在草地上奔跑的圖片。這隻貓有藍色的眼睛,看起來非常可愛和活潑。背景是模糊化的自然景色,強調了主體——那隻向前沖跑的小貓。這種攝影技巧稱為淺景深(或大光圈效果),它使得前景中的小貓變得清晰而銳利,同時使背景虛化以突出主題並營造出一種夢幻般的效果。整體上這張照片給人一種輕鬆愉快的感覺,並且很好地捕捉到了動物的行為瞬間。",
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 1253,
"completion_tokens": 104,
"total_tokens": 1357
},
"created": 1739349052,
"system_fingerprint": null,
"model": "qwen-vl-plus",
"id": "chatcmpl-cfc4f2aa-22a8-9a94-8243-44c5bd9899bc"
}
上傳的本地圖片樣本
方式二:通過DashScope SDK調用
您也可以使用阿里雲百鍊提供的 Python 或 Java SDK。
直接傳入 URL:調用模型 SDK 時,直接將以
oss://為首碼的URL字串作為檔案參數傳入。無需關心 Header:SDK 會自動添加必需的要求標頭,無需額外操作。
注意:並非所有模型都支援 SDK 調用,請以模型 API 文檔為準。
不支援 OpenAI SDK。
Python
前提條件
請安裝DashScope Python SDK,且DashScope Python SDK版本號碼 >=1.24.0。
範例程式碼
本樣本為調用 qwen-vl-plus 模型識別圖片內容。此程式碼範例僅適用於 qwen-vl 和 omni 系列模型。
請求樣本
請將 image 參數中的 oss://...替換為真實的臨時 URL,否則請求將失敗。
import os
import dashscope
messages = [
{
"role": "system",
"content": [{"text": "You are a helpful assistant."}]
},
{
"role": "user",
"content": [
{"image": "oss://dashscope-instant/xxx/2024-07-18/xxxx/cat.png"},
{"text": "這是什麼"}]
}]
# 若沒有配置環境變數,請用百鍊API Key將下行替換為:api_key="sk-xxx"
api_key = os.getenv('DASHSCOPE_API_KEY')
response = dashscope.MultiModalConversation.call(
api_key=api_key,
model='qwen-vl-plus',
messages=messages
)
print(response)
響應樣本
{
"status_code": 200,
"request_id": "ccd9dcfb-98f0-92bc-xxxxxx",
"code": "",
"message": "",
"output": {
"text": null,
"finish_reason": null,
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"text": "這是一張一隻貓在草地上奔跑的照片。貓的毛色主要是白色,帶有淺棕色的斑點,眼睛是藍色的,顯得非常可愛。背景是一個模糊的綠色草地和一些樹木,陽光照射下來,給整個畫面增添了一種溫暖的感覺。貓的姿態顯示出它正在快速移動,可能是在追逐什麼或只是在享受戶外活動的樂趣。整體來看,這是一幅充滿活力和生機的圖片。"
}
]
}
}
]
},
"usage": {
"input_tokens": 1112,
"output_tokens": 91,
"input_tokens_details": {
"text_tokens": 21,
"image_tokens": 1091
},
"prompt_tokens_details": {
"cached_tokens": 0
},
"total_tokens": 1203,
"output_tokens_details": {
"text_tokens": 91
},
"image_tokens": 1091
}
}Java
前提條件
請安裝DashScope Java SDK,且DashScope Java SDK版本號碼 >= 2.21.0。
範例程式碼
本樣本為調用 qwen-vl-plus 模型識別圖片內容。此程式碼範例僅適用於 qwen-vl 和 omni 系列模型。
請求樣本
請將 oss://...替換為真實的臨時 URL,否則請求將失敗。
import com.alibaba.dashscope.aigc.multimodalconversation.*;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.Arrays;
public class MultiModalConversationUsage {
private static final String modelName = "qwen-vl-plus";
// 若沒有配置環境變數,請用百鍊API Key將下行替換為:api_key="sk-xxx"
public static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void simpleMultiModalConversationCall() throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessageItemText systemText = new MultiModalMessageItemText("You are a helpful assistant.");
MultiModalConversationMessage systemMessage = MultiModalConversationMessage.builder()
.role(Role.SYSTEM.getValue()).content(Arrays.asList(systemText)).build();
MultiModalMessageItemImage userImage = new MultiModalMessageItemImage(
"oss://dashscope-instant/xxx/2024-07-18/xxxx/cat.png");
MultiModalMessageItemText userText = new MultiModalMessageItemText("這是什麼");
MultiModalConversationMessage userMessage =
MultiModalConversationMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(userImage, userText)).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
.model(MultiModalConversationUsage.modelName)
.apiKey(apiKey)
.message(systemMessage)
.vlHighResolutionImages(true)
.vlEnableImageHwOutput(true)
// .incrementalOutput(true)
.message(userMessage).build();
MultiModalConversationResult result = conv.call(param);
System.out.print(JsonUtils.toJson(result));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException /*| IOException*/ e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
響應樣本
{
"requestId": "b6d60f91-4a7f-9257-xxxxxx",
"usage": {
"input_tokens": 1112,
"output_tokens": 91,
"total_tokens": 1203,
"image_tokens": 1091,
"input_tokens_details": {
"text_tokens": 21,
"image_tokens": 1091
},
"output_tokens_details": {
"text_tokens": 91
}
},
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"text": "這是一張一隻貓在草地上奔跑的照片。貓的毛色主要是白色,帶有淺棕色的斑點,眼睛是藍色的,顯得非常可愛。背景是一個模糊的綠色草地和一些樹木,陽光照射下來,給整個畫面增添了一種溫暖的感覺。貓的姿態顯示出它正在快速移動,可能是在追逐什麼或只是在享受戶外活動的樂趣。整體來看,這是一幅充滿活力和生機的圖片。"
},
{
"image_hw": [
[
"924",
"924"
]
]
}
]
}
}
]
}
}附介面說明
在上述擷取臨時URL的兩種方式中,代碼調用和命令列工具已整合以下三個步驟,簡化檔案上傳操作。以下是各步驟的介面說明。
步驟1:擷取檔案上傳憑證
前提條件
請求介面
GET https://dashscope.aliyuncs.com/api/v1/uploads檔案上傳憑證介面限流為 100 QPS(按“阿里雲主帳號+模型”維度),且臨時儲存不可擴容。生產環境或高並發情境請使用阿里雲OSS等儲存服務。
入參描述
傳參方式 | 欄位 | 類型 | 必選 | 描述 | 樣本值 |
Header | Content-Type | string | 是 | 請求類型:application/json 。 | application/json |
Authorization | string | 是 | 阿里雲百鍊API Key,例如:Bearer sk-xxx。 | Bearer sk-xxx | |
Params | action | string | 是 | 操作類型,當前情境為 | getPolicy |
model | string | 是 | 需要調用的模型名稱。 | qwen-vl-plus |
出參描述
欄位 | 類型 | 描述 | 樣本值 |
request_id | string | 本次請求的系統唯一碼。 | 7574ee8f-...-11c33ab46e51 |
data | object | - | - |
data.policy | string | 上傳憑證。 | eyJl...1ZSJ9XX0= |
data.signature | string | 上傳憑證的簽名。 | g5K...d40= |
data.upload_dir | string | 上傳檔案的目錄。 | dashscope-instant/xxx/2024-07-18/xxxx |
data.upload_host | string | 上傳的host地址。 | https://dashscope-file-xxx.oss-cn-beijing.aliyuncs.com |
data.expire_in_seconds | string | 憑證有效期間(單位:秒)。 說明 到期後,重新調用本介面擷取新的憑證。 | 300 |
data.max_file_size_mb | string | 本次允許上傳的最大檔案的大小(單位:MB)。 該值與需要訪問的模型相關。 | 100 |
data.capacity_limit_mb | string | 同一個主帳號每天上傳容量限制(單位:MB)。 | 999999999 |
data.oss_access_key_id | string | 用於上傳的access key。 | LTAxxx |
data.x_oss_object_acl | string | 上傳檔案的存取權限, | private |
data.x_oss_forbid_overwrite | string | 檔案同名時是否可以覆蓋, | true |
請求樣本
curl --location 'https://dashscope.aliyuncs.com/api/v1/uploads?action=getPolicy&model=qwen-vl-plus' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json'若未配置阿里雲百鍊API Key到環境變數,請將$DASHSCOPE_API_KEY替換為實際API Key,例如:--header "Authorization: Bearer sk-xxx"。
響應樣本
{
"request_id": "52f4383a-c67d-9f8c-xxxxxx",
"data": {
"policy": "eyJl...1ZSJ=",
"signature": "eWy...=",
"upload_dir": "dashscope-instant/xxx/2024-07-18/xxx",
"upload_host": "https://dashscope-file-xxx.oss-cn-beijing.aliyuncs.com",
"expire_in_seconds": 300,
"max_file_size_mb": 100,
"capacity_limit_mb": 999999999,
"oss_access_key_id": "LTA...",
"x_oss_object_acl": "private",
"x_oss_forbid_overwrite": "true"
}
}步驟2:上傳檔案至臨時儲存空間
前提條件
已擷取檔案上傳憑證。
確保檔案上傳憑證在有效期間內,若憑證到期,請重新調用步驟1的介面擷取新的憑證。
查看檔案上傳憑證有效期間:步驟1的輸出參數
data.expire_in_seconds為憑證有效期間,單位為秒。
請求介面
POST {data.upload_host}請將{data.upload_host}替換為步驟1的輸出參數data.upload_host對應的值。
入參描述
傳參方式 | 欄位 | 類型 | 必選 | 描述 | 樣本值 |
Header | Content-Type | string | 否 | 提交表單必須為 在提交表單時,Content-Type會以 boundary 是自動產生的隨機字串,無需手動指定。若使用 SDK 拼接表單,SDK 也會自動產生該隨機值。 | multipart/form-data; boundary=9431149156168 |
form-data | OSSAccessKeyId | text | 是 | 檔案上傳憑證介面的輸出參數 | LTAm5xxx |
policy | text | 是 | 檔案上傳憑證介面的輸出參數 | g5K...d40= | |
Signature | text | 是 | 檔案上傳憑證介面的輸出參數 | Sm/tv7DcZuTZftFVvt5yOoSETsc= | |
key | text | 是 | 檔案上傳憑證介面的輸出參數 | 例如,
| |
x-oss-object-acl | text | 是 | 檔案上傳憑證介面的輸出參數 | private | |
x-oss-forbid-overwrite | text | 是 | 檔案上傳憑證介面的輸出參數中 | true | |
success_action_status | text | 否 | 通常取值為 200,上傳完成後介面返回 HTTP code 200,表示操作成功。 | 200 | |
file | text | 是 | 檔案或常值內容。 說明
| 例如,待上傳檔案 |
出參描述
調用成功時,本介面無任何參數輸出。
請求樣本
curl --location 'https://dashscope-file-xxx.oss-cn-beijing.aliyuncs.com' \
--form 'OSSAccessKeyId="LTAm5xxx"' \
--form 'Signature="Sm/tv7DcZuTZftFVvt5yOoSETsc="' \
--form 'policy="eyJleHBpcmF0aW9 ... ... ... dHJ1ZSJ9XX0="' \
--form 'x-oss-object-acl="private"' \
--form 'x-oss-forbid-overwrite="true"' \
--form 'key="dashscope-instant/xxx/2024-07-18/xxx/cat.png"' \
--form 'success_action_status="200"' \
--form 'file=@"/tmp/cat.png"'步驟3:組建檔案URL
檔案URL拼接邏輯:oss:// + key (步驟2的入參key)。該URL有效期間為 48 小時。
oss://dashscope-instant/xxx/2024-07-18/xxxx/cat.png錯誤碼
如果介面調用失敗並返回報錯資訊,請參見錯誤資訊進行解決。
本文的API還有特定狀態代碼,具體如下所示。
HTTP狀態代碼 | 介面錯誤碼(code) | 介面錯誤資訊(message) | 含義說明 |
400 | invalid_parameter_error | InternalError.Algo.InvalidParameter: The provided URL does not appear to be valid. Ensure it is correctly formatted. | 無效URL,請檢查URL是否填寫正確。 若使用臨時檔案URL,需確保請求的 Header 中添加了參數 |
400 | InvalidParameter.DataInspection | The media format is not supported or incorrect for the data inspection. | 可能的原因有:
|
403 | AccessDenied | Invalid according to Policy: Policy expired. | 檔案上傳憑證已經到期。 請重新調用檔案上傳憑證介面產生新憑證。 |
429 | Throttling.RateQuota | Requests rate limit exceeded, please try again later. | 調用頻次觸發限流。 檔案上傳憑證介面限流為 100 QPS(按阿里雲主帳號 + 模型維度)。觸發限流後,建議降低請求頻率,或遷移至 OSS 等自有儲存服務以規避限制。 |
常見問題
檔案上傳與模型調用使用的API KEY可以不一樣嗎?
檔案儲存體和存取權限基於阿里雲主帳號管理,API Key 僅為主帳號的訪問憑證。
因此,同一阿里雲主帳號下的不同 API Key 可正常使用,不同主帳號的 API Key因帳號隔離,模型調用無法跨帳號讀取檔案。
請確保檔案上傳與模型調用使用的 API Key 屬於同一阿里雲主帳號。