بعد از قطع انتقال فایل، مرورگر نباید از روی نوار پیشرفت حدس بزند سرور چند بایت دارد. ادامه امن به offset تأییدشده سرور و قرارداد نوشتن قطعه نیاز دارد. این راهنما پروتکل و رقابت انتقال را بررسی میکند؛ پیام انتخاب فایل و طراحی عمومی پیوست چت موضوع دیگری است.
قرارداد سرور منبع حقیقت است
در tus، کلاینت میتواند با HEAD موقعیت فعلی سرور را بگیرد و با PATCH از همان offset ادامه دهد. offset نامنطبق باید بدون تغییر فایل رد شود. checksum افزونه اختیاری است و پیش از استفاده باید پشتیبانیاش معلوم باشد. اینها قواعد tus هستند؛ API دیگری را بدون بررسی سازگار با آن فرض نکنید.
در طرح آموزشی ما، برای هر فایل شناسه انتقال، طول نهایی و وضعیت دریافت نگه میداریم. قطعه تنها وقتی به offset اضافه میشود که نوشتن و کنترل مورد توافق انجام شده باشد. اگر پاسخ موفق در شبکه گم شد، تلاش بعدی ابتدا وضعیت سرور را میخواند؛ همان قطعه کورکورانه به انتها اضافه نمیشود.
مثال قطعهها و رقابت
فایل ساختگی دوازدهبایتی abcdefghijkl را به سه قطعه چهاربایتی تقسیم کنید. سرور abcd را پذیرفته و offset=4 دارد، ولی پاسخ به کلاینت نرسیده است. کلاینت با HEAD مقدار۴ را میگیرد و از efgh ادامه میدهد. اگر کلاینت قدیمی هنوز offset=0 بفرستد، باید تعارض بگیرد؛ فایل نباید abcdabcd شود.
| گام | درخواست | offset پیش از کار | نتیجه |
|---|---|---|---|
| ۱ | قطعه abcd از۰ | 0 | پذیرش؛ offset۴ |
| ۲ | پاسخ گم میشود | 4 | بدون نوشتن تازه |
| ۳ | HEAD | 4 | شروع ادامه از۴ |
| ۴ | کلاینت قدیمی از۰ | 4 | رد تعارض؛ offset۴ |
| ۵ | قطعه efgh از۴ | 4 | پذیرش؛ offset۸ |
CSV همراه هش SHA-256 واقعی همین قطعههای ساختگی را دارد. الگوریتم باید در پیادهسازی پشتیبانی و توافق شده باشد؛ این جدول ادعای پیشفرض بودن SHA-256 در همه سرورهای tus نیست. کنترل قطعه، شاهد تمامیت انتقال است و جای مجوز فایل یا اصالت محتوای آن را نمیگیرد.
پایان انتقال با شروع پردازش یکی نیست
وقتی offset برابر طول نهایی شد، برنامه میتواند یک عملیات commit مستقل برای آمادهکردن پردازش داشته باشد. این commit افزوده طراحی برنامه است، نه الزام core tus. وضعیت receiving باید با مقایسه اتمیک به ready تغییر کند تا دو پیام پایان، دو کار مدل نسازند. شناسه انتقال به شناسه کار نهایی متصل و یکتا بماند.
آزمون آخر دو کلاینت را همزمان به commit میرساند و انتظار یک کار دارد. فایل منقضی یا نیمهتمام نباید آماده پردازش اعلام شود. نمونه کوچک کافی است؛ نیازی به آپلود فایل مشتری یا ایجاد ترافیک سنگین نیست. این متن پروتکل آماده نصب یا قابلیت موجود اپرا را ادعا نمیکند.
کاربرگ همراه و منبع
دریافت CSV اختصاصی این راهنما؛ تمام رکوردها و شناسههای کاربرگ ساختگیاند. مقادیر نمونه را به داده یا نتیجه واقعی مشتری تعبیر نکنید.
tus 1.0: ادامه بارگذاری و افزونه checksum. منابع در ۱ نوامبر ۲۰۲۶ خوانده شدند؛ مثال و الگوی اجرایی بالا پیشنهاد آموزشی تحریریه است، نه تأیید قابلیت محصول.
اگر این مسئله در مسیر پاسخگویی مشتری شما وجود دارد، آموزشهای اپرا را ببینید و همین کاربرگ را برای بررسی دامنه و محدودیت در دمو آماده کنید.