تخطَّ إلى المحتوى

رفع الملفات

يمكن للوكلاء رفع وإرسال ملفات للمستخدمين في المحادثات. جميع الملفات تُشفّر قبل الرفع.

تدفق الرفع

رفع الملفات يتبع تدفق URL موقّع مسبقاً من ثلاث خطوات:

1. Request presigned URL → POST /agents/:id/files
2. Upload binary → PUT /agents/:id/files/:uploadId/upload
3. Confirm upload → POST /files/confirm (with SHA-256 hash)

الخطوة 1: طلب URL الرفع

const response = await fetch(
`${baseUrl}/agents/${agentId}/files`,
{
method: "POST",
headers: {
"Authorization": `Bearer ${agentToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
filename: "report.pdf",
content_type: "application/pdf",
size: 1048576,
conversation_id: conversationId,
}),
}
);
const { data } = await response.json();
// data.upload_id - used in subsequent steps
// data.upload_url - presigned URL for the binary upload

الخطوة 2: رفع الملف الثنائي

await fetch(
`${baseUrl}/agents/${agentId}/files/${data.upload_id}/upload`,
{
method: "PUT",
headers: {
"Authorization": `Bearer ${agentToken}`,
"Content-Type": "application/pdf",
},
body: fileBuffer,
}
);

الخطوة 3: تأكيد الرفع

await fetch(
`${baseUrl}/files/confirm`,
{
method: "POST",
headers: {
"Authorization": `Bearer ${agentToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
upload_id: data.upload_id,
sha256: computedSha256Hash,
}),
}
);

يُتحقق من تجزئة SHA-256 على جانب الخادم. عدم التطابق يُرجع رمز الخطأ SHA256_MISMATCH ويطلق تنبيه تدقيق.

حدود الحجم

القيدالقيمة
الحد الأقصى لحجم الملف100MB
رفع غير عضومرفوض (خطأ: NOT_CONVERSATION_MEMBER_UPLOAD)

التشفير

تُشفّر الملفات على جانب العميل قبل الرفع. SDK (عند تكامل رفع الملفات بالكامل) سيتعامل مع التشفير تلقائياً. حالياً، رفع الملفات يستخدم نقاط REST مباشرة كما هو موضح أعلاه.

مدعوم في التكاملات

يوفر Claude Code Plugin أداة hashee_send_file تغلّف تدفق الرفع بالكامل، بما في ذلك الكشف التلقائي لنوع MIME وحد حجم 100MB.

الخطوات التالية