Expand description
Nextcloud WebDAV Chunked Upload v2 API client.
Provides UploadClient for uploading large files to Nextcloud using the
WebDAV Chunked Upload v2 protocol, and UploadSession for tracking active
upload progress and calculating chunk ranges.
§Protocol Overview
- Initialize Upload Session:
- Sends
MKCOL /remote.php/dav/uploads/{user}/{upload_id} - Required header:
Destination: {destination_webdav_url_or_path}
- Sends
- Upload Chunks:
- Sends
PUT /remote.php/dav/uploads/{user}/{upload_id}/{chunk_number}(e.g.00001,00002) - Required headers:
Destination: {destination_path},OC-Total-Length: {total_file_size} - Request body: chunk bytes (recommended 5 MiB to 5 GiB, last chunk may be smaller)
- Sends
- Assemble File:
- Sends
MOVE /remote.php/dav/uploads/{user}/{upload_id}/.file - Required headers:
Destination: {destination_path},OC-Total-Length: {total_file_size} - Optional header:
X-OC-Mtime: {unix_timestamp}
- Sends
- Abort Upload:
- Sends
DELETE /remote.php/dav/uploads/{user}/{upload_id}/(cancels upload and cleans up temporary chunks)
- Sends
§Example
use nextcloud_uploads::{UploadClient, UploadSession, DEFAULT_CHUNK_SIZE};
let client = UploadClient::new(transport, auth);
// 1. Start the upload session
let total_size = 25 * 1024 * 1024; // 25 MiB
let session = client.start("alice", "Documents/archive.zip", total_size).await?;
// 2. Calculate chunk boundaries and upload each chunk
for boundary in session.chunk_boundaries(DEFAULT_CHUNK_SIZE).unwrap() {
let chunk_bytes = vec![0u8; boundary.len() as usize];
client.upload_chunk(&session, boundary.index, chunk_bytes).await?;
}
// 3. Finish assembly
client.finish(&session, None).await?;Re-exports§
pub use path::abort_path;pub use path::assembly_path;pub use path::chunk_path;pub use path::upload_collection_path;
Modules§
- path
- URL and path helpers for Nextcloud WebDAV Chunked Upload v2.
Structs§
- Chunk
Boundary - Describes the byte boundaries of an individual upload chunk.
- Upload
Client - Client for Nextcloud’s WebDAV Chunked Upload v2 protocol.
- Upload
Session - Active chunked upload session state.
Constants§
- DEFAULT_
CHUNK_ SIZE - Default chunk size used for uploads (10 MiB).
- DESTINATION_
HEADER - Header carrying a WebDAV destination URI (RFC 4918 §10.3).
- MAX_
CHUNK_ SIZE - Maximum chunk size recommended by Nextcloud (5 GiB).
- MIN_
CHUNK_ SIZE - Minimum chunk size recommended by Nextcloud (5 MiB).
- MTIME_
HEADER - Header conveying target modification time (in unix seconds) during chunk assembly.
- TOTAL_
LENGTH_ HEADER - Header conveying total file size during chunked upload and assembly.