When using the official Nextcloud Android App (v33.1.1) to upload files to OxiCloud, the upload fails immediately with a 405 Method Not Allowed status code.After checking the Nginx logs and digging into the OxiCloud source code, I found that the Nextcloud client sends a PROPFIND request right after successfully creating the chunked upload directory via MKCOL. However, the current chunked upload router in OxiCloud does not handle the PROPFIND HTTP method, causing it to fall through to the wildcard match and return a 405 error.
nginx logs
- admin [02/Jun/2026:11:25:56 +0800] "HEAD /remote.php/dav/files/admin/IMG20260530183424.jpg HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Android) Nextcloud-android/33.1.1"
- admin [02/Jun/2026:11:25:56 +0800] "MKCOL /remote.php/dav/uploads/admin/a5cca84dded009801217fb4dc748187b HTTP/1.1" 201 0 "-" "Mozilla/5.0 (Android) Nextcloud-android/33.1.1"
- admin [02/Jun/2026:11:33:15 +0800] "PROPFIND /remote.php/dav/uploads/admin/71c4f749c054c2e33e14ee50443c240b HTTP/1.1" 405 0 "-" "Mozilla/5.0 (Android) Nextcloud-android/33.1.1"
In the OxiCloud source code responsible for handling the Nextcloud chunked upload route (/remote.php/dav/uploads/...), the match method.as_str() block only handles MKCOL, PUT, MOVE, and DELETE.
match method.as_str() {
"MKCOL" => handle_mkcol(state, &user, &upload_id).await,
"PUT" => handle_put_chunk(state, req, &user, &upload_id, &rest).await,
"MOVE" => handle_assemble(state, req, &user, &upload_id).await,
"DELETE" => handle_abort(state, &user, &upload_id).await,
_ => Ok(Response::builder()
.status(StatusCode::METHOD_NOT_ALLOWED) // Modern Nextcloud App hits this block via PROPFIND
.body(Body::empty())
.unwrap()),
}
When using the official Nextcloud Android App (v33.1.1) to upload files to OxiCloud, the upload fails immediately with a 405 Method Not Allowed status code.After checking the Nginx logs and digging into the OxiCloud source code, I found that the Nextcloud client sends a PROPFIND request right after successfully creating the chunked upload directory via MKCOL. However, the current chunked upload router in OxiCloud does not handle the PROPFIND HTTP method, causing it to fall through to the wildcard match and return a 405 error.
nginx logs
In the OxiCloud source code responsible for handling the Nextcloud chunked upload route (/remote.php/dav/uploads/...), the match method.as_str() block only handles MKCOL, PUT, MOVE, and DELETE.
match method.as_str() {
"MKCOL" => handle_mkcol(state, &user, &upload_id).await,
"PUT" => handle_put_chunk(state, req, &user, &upload_id, &rest).await,
"MOVE" => handle_assemble(state, req, &user, &upload_id).await,
"DELETE" => handle_abort(state, &user, &upload_id).await,
_ => Ok(Response::builder()
.status(StatusCode::METHOD_NOT_ALLOWED) // Modern Nextcloud App hits this block via PROPFIND
.body(Body::empty())
.unwrap()),
}