diff --git a/include/miniocpp/args.h b/include/miniocpp/args.h index d1c4d12..ed6c485 100644 --- a/include/miniocpp/args.h +++ b/include/miniocpp/args.h @@ -360,6 +360,7 @@ struct ComposeObjectArgs : public ObjectWriteArgs { struct UploadObjectArgs : public PutObjectBaseArgs { std::string filename; + std::ios_base::openmode openmode = std::ios_base::in; http::ProgressFunction progressfunc = nullptr; void* progress_userdata = nullptr; diff --git a/src/client.cc b/src/client.cc index 94ffd56..62e2cb6 100644 --- a/src/client.cc +++ b/src/client.cc @@ -777,7 +777,7 @@ UploadObjectResponse Client::UploadObject(UploadObjectArgs args) { std::ifstream file; file.exceptions(std::ifstream::failbit | std::ifstream::badbit); try { - file.open(args.filename); + file.open(args.filename, args.openmode); } catch (std::system_error& err) { return error::make( "unable to open file " + args.filename + "; " + err.code().message());