tus 1.0 protocol

tus 1.0 resumable uploads

AjaxUploader ships a zero-dependency tus 1.0 client (Core + Creation + Termination extensions) and a filesystem-backed TusStorage class. Interoperates with tusd, uppy-companion, or any tus-1.0-compliant server. Works out of the box against the built-in endpoint - no extra wiring beyond registering the ajaxupload.axd handler in web.config.

Client config
AjaxUploader.create('#uploader', {
 uploadUrl: '/ajaxupload.axd/upload',
 strategy: 'tus',
 chunkSize: 5 * 1024 * 1024, // PATCH chunk size persistState: true,
 persistAdapter: 'indexeddb'
 // tusEndpoint defaults to `{uploadUrl base}/tus` - override for tusd: // tusEndpoint: 'https://your-tusd-host/files/' 
});
Server-side

The default ajaxupload.axd handler registers the tus routes automatically. No additional code required.

Wire protocol (tus 1.0.0)
  • OPTIONS /ajaxupload.axd/tus -> capabilities (Tus-Version: 1.0.0, Tus-Extension: creation,termination)
  • POST /ajaxupload.axd/tus -> 201 + Location: /ajaxupload.axd/tus/{id}
  • HEAD /ajaxupload.axd/tus/{id} -> current Upload-Offset (used for resume)
  • PATCH /ajaxupload.axd/tus/{id} -> bytes with Content-Type: application/offset+octet-stream
  • DELETE /ajaxupload.axd/tus/{id} -> cleanup on cancel / fatal error
Third-party server interop

The same client works against any tus 1.0 server - just point tusEndpoint at it. Tested against tusd and uppy-companion.