Model multimodal seperti Qwen-VL memerlukan URL file sebagai input gambar, video, dan audio. Model Studio menyediakan ruang penyimpanan sementara gratis bagi pengguna yang tidak memiliki URL publik: unggah file dan dapatkan URL oss:// yang berlaku selama 48 jam.
URL sementara hanya untuk pengembangan dan pengujian—tidak untuk skenario produksi, konkurensi tinggi, atau uji stres. Untuk beban kerja produksi, gunakan Object Storage Service (OSS) agar tersedia dalam jangka panjang dan menghindari batas laju.
Fitur ini hanya tersedia di wilayah China (Beijing). Gunakan API key dari wilayah ini.
Cara kerja
Unggah file dan tentukan model target. API akan mengembalikan URL
oss://.Gunakan URL tersebut dalam pemanggilan model Anda. Anda harus menyelesaikan Langkah 2 untuk menggunakan URL sementara—melewatkannya akan menyebabkan error. Untuk panggilan HTTP, tambahkan header
X-DashScope-OssResourceResolve: enable. SDK DashScope menambahkan header ini secara otomatis.
Batasan
Kendala | Detail |
Pengikatan file-model | Tentukan nama model saat mengunggah. Gunakan model yang sama dalam panggilan berikutnya—file tidak dapat dibagikan lintas model. |
Batas Ukuran File | Ukuran file tidak boleh melebihi 1GB dan juga harus mematuhi batas spesifik model yang dipilih. |
Pengikatan file-akun | API key untuk unggah dan panggilan model harus berasal dari Akun Alibaba Cloud yang sama—file tidak dapat dibagikan lintas akun. |
Kedaluwarsa 48 jam | File dihapus secara otomatis setelah 48 jam. Selesaikan panggilan model dalam periode ini. |
Tidak ada manajemen pasca-unggah | File tidak dapat diinterogasi, dimodifikasi, atau diunduh—file hanya berfungsi sebagai parameter URL dalam panggilan model. |
Batas laju | API kredensial unggah dibatasi hingga 100 QPS per akun per model. Permintaan berlebih akan gagal. Ruang penyimpanan sementara tidak mendukung scale-out. |
Prasyarat
Sebelum memulai:
API key yang dikonfigurasi sebagai variabel lingkungan
Nama model yang akan menggunakan file tersebut (misalnya,
qwen-vl-plus)
Langkah 1: Dapatkan URL sementara
Unggah file dan dapatkan URL sementaranya menggunakan salah satu metode berikut:
Unggah dengan kode
Python
Prasyarat
Python 3.8 atau lebih baru
Instal dependensi:
pip install -U requestsParameter
Parameter | Deskripsi | Contoh |
| Model Studio API key | Dibaca dari variabel lingkungan |
| Model yang akan menggunakan file tersebut |
|
| Jalur ke file lokal |
|
Kode contoh
import os
import requests
from pathlib import Path
from datetime import datetime, timedelta
def get_upload_policy(api_key, model_name):
"""Dapatkan kredensial unggah file."""
url = "https://dashscope-intl.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"Gagal mendapatkan kebijakan unggah: {response.text}")
return response.json()['data']
def upload_file_to_oss(policy_data, file_path):
"""Unggah file ke penyimpanan OSS sementara."""
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"Gagal mengunggah file: {response.text}")
return f"oss://{key}"
def upload_file_and_get_url(api_key, model_name, file_path):
"""Unggah file dan dapatkan URL-nya."""
# 1. Dapatkan kredensial unggah (dibatasi laju hingga 100 QPS)
policy_data = get_upload_policy(api_key, model_name)
# 2. Unggah file ke OSS
oss_url = upload_file_to_oss(policy_data, file_path)
return oss_url
# Contoh
if __name__ == "__main__":
# Baca API key dari variabel lingkungan
api_key = os.getenv("DASHSCOPE_API_KEY")
if not api_key:
raise Exception("Atur variabel lingkungan DASHSCOPE_API_KEY.")
# Atur nama model
model_name="qwen-vl-plus"
# Ganti dengan jalur file sebenarnya
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"File berhasil diunggah. URL berlaku selama 48 jam.")
print(f"Waktu kedaluwarsa: {expire_time.strftime('%Y-%m-%d %H:%M:%S')}")
print(f"URL sementara: {public_url}")
print("Catatan: Saat menggunakan URL sementara dengan awalan oss://, Anda harus menambahkan parameter X-DashScope-OssResourceResolve: enable ke header permintaan HTTP. Untuk informasi lebih lanjut, lihat https://www.alibabacloud.com/help/en/model-studio/get-temporary-file-url#http-call")
except Exception as e:
print(f"Error: {str(e)}")Output contoh
File berhasil diunggah. URL berlaku selama 48 jam.
Waktu kedaluwarsa: 2024-07-18 17:36:15
URL sementara: oss://dashscope-instant/xxx/2024-07-18/xxx/cat.png
Catatan: Saat menggunakan URL sementara dengan awalan oss://, Anda harus menambahkan parameter X-DashScope-OssResourceResolve: enable ke header permintaan HTTP. Untuk informasi lebih lanjut, lihat https://www.alibabacloud.com/help/en/model-studio/get-temporary-file-url#http-callSetelah mendapatkan URL sementara, tambahkan header X-DashScope-OssResourceResolve: enable ke permintaan HTTP saat melakukan panggilan. Untuk informasi lebih lanjut, lihat Panggilan menggunakan HTTP.
Java
Prasyarat
JDK 1.8 atau lebih baru
Tambahkan dependensi berikut ke
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>Parameter
Parameter | Deskripsi | Contoh |
| Model Studio API key | Dibaca dari variabel lingkungan |
| Model yang akan menggunakan file tersebut |
|
| Jalur ke file lokal |
|
Kode contoh
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-intl.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("Gagal mendapatkan kebijakan unggah: " +
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("Gagal mengunggah 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) {
// Baca API key dari variabel lingkungan
String apiKey = System.getenv("DASHSCOPE_API_KEY");
if (apiKey == null || apiKey.isEmpty()) {
System.err.println("Atur variabel lingkungan DASHSCOPE_API_KEY.");
System.exit(1);
}
// Nama model
String modelName = "qwen-vl-plus";
// Ganti dengan jalur file sebenarnya
String filePath = "src/main/resources/tmp/cat.png";
try {
// Periksa apakah file ada
File file = new File(filePath);
if (!file.exists()) {
System.err.println("File tidak ditemukan: " + 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("File berhasil diunggah. URL berlaku selama 48 jam.");
System.out.println("Waktu kedaluwarsa: " + expireTime.format(formatter));
System.out.println("URL sementara: " + publicUrl);
System.out.println("Catatan: Saat menggunakan URL sementara dengan awalan oss://, Anda harus menambahkan parameter X-DashScope-OssResourceResolve: enable ke header permintaan HTTP. Untuk informasi lebih lanjut, lihat https://www.alibabacloud.com/help/en/model-studio/get-temporary-file-url#http-call");
} catch (IOException e) {
System.err.println("Error: " + e.getMessage());
}
}
}Contoh output
File berhasil diunggah. URL berlaku selama 48 jam.
Waktu kedaluwarsa: 2024-07-18 17:36:15
URL sementara: oss://dashscope-instant/xxx/2024-07-18/xxx/cat.png
Catatan: Saat menggunakan URL sementara dengan awalan oss://, Anda harus menambahkan parameter X-DashScope-OssResourceResolve: enable ke header permintaan HTTP. Untuk informasi lebih lanjut, lihat https://www.alibabacloud.com/help/en/model-studio/get-temporary-file-url#http-callSetelah mendapatkan URL sementara, tambahkan header X-DashScope-OssResourceResolve: enable ke permintaan HTTP saat melakukan panggilan. Untuk informasi lebih lanjut, lihat Panggilan menggunakan HTTP.
Unggah dengan CLI
CLI DashScope mengunggah file dengan satu perintah dan mengembalikan URL sementara.
Prasyarat
Python 3.8 atau lebih baru
DashScope Python SDK versi
1.24.0atau lebih baru:
pip install -U dashscopeParameter CLI
Parameter | Wajib | Deskripsi | Contoh |
| Ya | Subperintah DashScope untuk unggah file |
|
| Ya | Model target untuk file tersebut |
|
| Ya | Jalur file lokal (relatif atau absolut) |
|
| Tidak | API key. Tidak diperlukan jika variabel lingkungan |
|
Unggah dengan variabel lingkungan (disarankan)
Prasyarat: Konfigurasikan API key sebagai variabel lingkungan:
dashscope oss.upload --model qwen-vl-plus --file cat.pngContoh output:
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.pngUnggah dengan API key inline
dashscope oss.upload --model qwen-vl-plus --file cat.png --api_key sk-xxxxxxxContoh output:
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.pngSetelah mendapatkan URL sementara, tambahkan header X-DashScope-OssResourceResolve: enable ke permintaan HTTP saat melakukan panggilan. Untuk informasi lebih lanjut, lihat Panggilan menggunakan HTTP.
Langkah 2: Panggil model dengan URL sementara
Setelah mengunggah file, gunakan URL oss:// dalam panggilan model Anda. Dua aturan berlaku:
Konsistensi model: Gunakan model yang sama seperti yang ditentukan saat unggah.
Konsistensi akun: Gunakan API key yang berasal dari Akun Alibaba Cloud yang sama.
Pilih salah satu metode berikut:
HTTP
Saat memanggil API melalui HTTP (curl, Postman, dll.), tambahkan header ini:
X-DashScope-OssResourceResolve: enableTanpa header ini, API tidak dapat menyelesaikan URL oss:// dan permintaan akan gagal.
Contoh permintaan
Contoh ini memanggil qwen-vl-plus untuk mendeskripsikan gambar yang diunggah.
Ganti oss://... dengan URL sementara Anda yang sebenarnya.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": "What is this?"},
{"type": "image_url","image_url": {"url": "oss://dashscope-instant/xxx/2024-07-18/xxxx/cat.png"}}]
}]
}'Contoh respons
{
"choices": [
{
"message": {
"content": "This is a picture of a white cat running on the grass. The cat has blue eyes and looks very cute and lively. The background is a blurred natural landscape, which emphasizes the subject: the small cat dashing forward. This photographic technique is called shallow depth of field (or a large aperture effect). It makes the cat in the foreground sharp and clear while blurring the background to highlight the subject and create a dreamlike effect. Overall, this photo feels relaxed and pleasant, and it captures a great moment of the animal's behavior.",
"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
SDK DashScope menangani header X-DashScope-OssResourceResolve secara otomatis—berikan URL oss:// langsung sebagai parameter file.
SDK OpenAI tidak didukung. Tidak semua model mendukung panggilan SDK—lihat referensi API model tertentu untuk detailnya.
Python
Prasyarat: DashScope Python SDK 1.24.0 atau lebih baru.
Contoh ini memanggil qwen-vl-plus untuk mendeskripsikan gambar yang diunggah. Kode ini berlaku untuk model qwen-vl dan omni.
Ganti oss://... pada parameter gambar dengan URL sementara Anda yang sebenarnya.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": "What is this?"}]
}]
# Jika tidak dikonfigurasi sebagai variabel lingkungan, ganti dengan: 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)Contoh respons
{
"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": "This is a photo of a cat running on the grass. The cat's fur is mainly white with light brown spots, and its eyes are blue, making it look very cute. The background is a blurry green meadow with some trees, and the sunlight adds a warm feeling to the whole picture. The cat's posture shows that it is moving quickly, possibly chasing something or just enjoying the outdoors. Overall, this is a vibrant and lively picture."
}
]
}
}
]
},
"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
Prasyarat: DashScope Java SDK 2.21.0 atau lebih baru.
Contoh ini memanggil qwen-vl-plus untuk mendeskripsikan gambar yang diunggah. Kode ini berlaku untuk model qwen-vl dan omni.
Ganti oss://... dengan URL sementara Anda yang sebenarnya.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";
// Jika tidak dikonfigurasi sebagai variabel lingkungan, ganti dengan: 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("What is this?");
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 e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}Contoh respons
{
"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": "This is a photo of a cat running on the grass. The cat's fur is mainly white with light brown spots, and its eyes are blue, making it look very cute. The background is a blurry green meadow with some trees, and the sunlight adds a warm feeling to the whole picture. The cat's posture shows that it is moving quickly, possibly chasing something or just enjoying the outdoors. Overall, this is a vibrant and lively picture."
},
{
"image_hw": [
[
"924",
"924"
]
]
}
]
}
}
]
}
}Referensi API
Kode contoh dan CLI pada Langkah 1 membungkus tiga operasi API berikut secara internal. Gunakan referensi ini untuk mengimplementasikan alur unggah secara manual.
Dapatkan kredensial unggah file
GET https://dashscope.aliyuncs.com/api/v1/uploadsAPI kredensial dibatasi laju hingga 100 QPS per akun per model. Ruang penyimpanan sementara tidak dapat diperluas kapasitasnya. Untuk beban kerja produksi atau konkurensi tinggi, gunakan Alibaba Cloud OSS.
Parameter permintaan
Lokasi | Bidang | Tipe | Wajib | Deskripsi | Contoh |
Header | Content-Type | _string_ | Ya | Jenis permintaan. |
|
Header | Authorization | _string_ | Ya | Model Studio API key. |
|
Params | action | _string_ | Ya | Jenis operasi. Atur ke |
|
Params | model | _string_ | Ya | Nama model target. |
|
Parameter respons
Bidang | Tipe | Deskripsi | Contoh |
request_id | _string_ | ID permintaan unik. |
|
data | _object_ | - | - |
data.policy | _string_ | Kredensial unggah. |
|
data.signature | _string_ | Tanda tangan kredensial. |
|
data.upload_dir | _string_ | Jalur direktori unggah. |
|
data.upload_host | _string_ | Host OSS untuk unggah. |
|
data.expire_in_seconds | _string_ | Masa berlaku kredensial dalam detik. Dapatkan kredensial baru setelah kedaluwarsa. |
|
data.max_file_size_mb | _string_ | Ukuran maksimum file unggah dalam MB. Berbeda-beda tergantung model. |
|
data.capacity_limit_mb | _string_ | Kapasitas unggah harian per Akun Alibaba Cloud dalam MB. |
|
data.oss_access_key_id | _string_ | Kunci akses untuk unggah. |
|
data.x_oss_object_acl | _string_ | Izin akses file yang diunggah. |
|
data.x_oss_forbid_overwrite | _string_ | Apakah penimpaan file dengan nama yang sama diblokir. |
|
Contoh permintaan
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'Jika API key tidak dikonfigurasi sebagai variabel lingkungan, ganti$DASHSCOPE_API_KEYdengan API key Anda:--header "Authorization: Bearer sk-xxx".
Contoh respons
{
"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"
}
}Unggah file ke ruang penyimpanan sementara
POST {data.upload_host}Ganti{data.upload_host}dengandata.upload_hostdari respons kredensial.
Parameter permintaan
Lokasi | Bidang | Tipe | Wajib | Deskripsi | Contoh |
Header | Content-Type | _string_ | Tidak | Kirim formulir sebagai |
|
form-data | OSSAccessKeyId | _text_ | Ya |
|
|
form-data | policy | _text_ | Ya |
|
|
form-data | Signature | _text_ | Ya |
|
|
form-data | key | _text_ | Ya |
|
|
form-data | x-oss-object-acl | _text_ | Ya |
|
|
form-data | x-oss-forbid-overwrite | _text_ | Ya |
|
|
form-data | success_action_status | _text_ | Tidak | Kode status HTTP yang dikembalikan saat sukses. Biasanya |
|
form-data | file | _file_ | Ya | File yang akan diunggah. Hanya satu file per permintaan. Bidang |
|
Jika berhasil, API mengembalikan HTTP 200 tanpa badan respons.
Contoh permintaan
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"'Buat URL file
Gabungkan oss:// dengan key dari permintaan unggah. URL ini berlaku selama 48 jam.
oss://dashscope-instant/xxx/2024-07-18/xxxx/cat.pngKode kesalahan
Jika panggilan API gagal, lihat Pesan kesalahan untuk troubleshooting umum.
Kode kesalahan berikut khusus untuk unggah file sementara:
Status HTTP | Kode kesalahan | Pesan kesalahan | Penyebab dan penyelesaian |
400 | invalid_parameter_error | InternalError.Algo.InvalidParameter: URL yang diberikan tampaknya tidak valid. Pastikan formatnya benar. | URL salah format. Verifikasi format URL. Jika menggunakan URL |
400 | InvalidParameter.DataInspection | Format media tidak didukung atau salah untuk inspeksi data. | Header permintaan tidak memiliki |
403 | AccessDenied | Invalid according to Policy: Policy expired. | Kredensial unggah telah kedaluwarsa. Panggil ulang API kredensial untuk mendapatkan yang baru. |
429 | Throttling.RateQuota | Batas laju permintaan terlampaui, silakan coba lagi nanti. | Laju permintaan melebihi 100 QPS. Kurangi frekuensi permintaan, atau migrasi ke OSS untuk beban kerja produksi. |
FAQ
Apa yang harus saya lakukan jika URL oss:// mengembalikan error?
Ikuti langkah-langkah berikut:
Periksa header permintaan. Jika memanggil API melalui HTTP (curl, Postman, dll.), tambahkan
X-DashScope-OssResourceResolve: enableke header permintaan. Tanpa header ini, server tidak dapat menyelesaikan protokoloss://. SDK DashScope menambahkan header ini secara otomatis.Periksa masa berlaku URL. URL
oss://kedaluwarsa 48 jam setelah diunggah. Jika sudah kedaluwarsa, unggah ulang file untuk mendapatkan URL baru.
Apakah saya bisa menggunakan API key berbeda untuk unggah file dan panggilan model?
Ya, selama kedua API key berasal dari Akun Alibaba Cloud yang sama. Akses file dikelola di tingkat akun, bukan tingkat API key.
API key dari Akun Alibaba Cloud yang berbeda tidak dapat mengakses file yang diunggah oleh akun lain.