storage: support resumable uploads