1 /* 2 * Copyright 2009-2017 Alibaba Cloud All rights reserved. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #pragma once 18 #include <alibabacloud/oss/Export.h> 19 #include <alibabacloud/oss/OssRequest.h> 20 #include <alibabacloud/oss/Types.h> 21 #include <alibabacloud/oss/model/ObjectMetaData.h> 22 #include <alibabacloud/oss/http/HttpType.h> 23 24 namespace AlibabaCloud 25 { 26 namespace OSS 27 { 28 class ALIBABACLOUD_OSS_EXPORT UploadObjectRequest : public OssResumableBaseRequest 29 { 30 public: 31 UploadObjectRequest(const std::string& bucket, const std::string& key, 32 const std::string& filePath, const std::string& checkpointDir, 33 const uint64_t partSize, const uint32_t threadNum); 34 UploadObjectRequest(const std::string& bucket, const std::string& key, 35 const std::string& filePath, const std::string &checkpointDir, 36 const uint64_t partSize, const uint32_t threadNum, const ObjectMetaData& meta); 37 UploadObjectRequest(const std::string& bucket, const std::string& key, 38 const std::string& filePath, const std::string& checkpointDir, 39 const ObjectMetaData& meta); 40 UploadObjectRequest(const std::string& bucket, const std::string& key, 41 const std::string& filePath, const std::string& checkpointDir); 42 UploadObjectRequest(const std::string& bucket, const std::string& key, 43 const std::string& filePath); 44 Content()45 std::shared_ptr<std::iostream> Content(){ return content_; } EncodingType()46 const std::string& EncodingType() const{return encodingType_;} FilePath()47 const std::string& FilePath() const{return filePath_;} MetaData()48 const ObjectMetaData& MetaData() const { return metaData_; } MetaData()49 ObjectMetaData& MetaData() { return metaData_; } 50 51 UploadObjectRequest(const std::string& bucket, const std::string& key, 52 const std::wstring& filePath, const std::wstring& checkpointDir, 53 const uint64_t partSize, const uint32_t threadNum); 54 UploadObjectRequest(const std::string& bucket, const std::string& key, 55 const std::wstring& filePath, const std::wstring &checkpointDir, 56 const uint64_t partSize, const uint32_t threadNum, const ObjectMetaData& meta); 57 UploadObjectRequest(const std::string& bucket, const std::string& key, 58 const std::wstring& filePath, const std::wstring& checkpointDir, 59 const ObjectMetaData& meta); 60 UploadObjectRequest(const std::string& bucket, const std::string& key, 61 const std::wstring& filePath, const std::wstring& checkpointDir); 62 UploadObjectRequest(const std::string& bucket, const std::string& key, 63 const std::wstring& filePath); FilePathW()64 const std::wstring& FilePathW() const { return filePathW_; } 65 setCacheControl(const std::string & value)66 void setCacheControl(const std::string& value){metaData_.addHeader(Http::CACHE_CONTROL, value);} setContentDisposition(const std::string & value)67 void setContentDisposition(const std::string& value){metaData_.addHeader(Http::CONTENT_DISPOSITION, value);} setContentEncoding(const std::string & value)68 void setContentEncoding(const std::string& value){metaData_.addHeader(Http::CONTENT_ENCODING, value);} setExpires(const std::string & value)69 void setExpires(const std::string& value){metaData_.addHeader(Http::EXPIRES, value);} 70 void setAcl(CannedAccessControlList& acl); 71 void setCallback(const std::string& callback, const std::string& callbackVar = ""); setEncodingType(const std::string & type)72 void setEncodingType(const std::string& type) {encodingType_ = type; } 73 void setTagging(const std::string& value); 74 75 protected: 76 virtual int validate() const; 77 private: 78 std::string filePath_; 79 std::shared_ptr<std::iostream> content_; 80 ObjectMetaData metaData_; 81 std::string encodingType_; 82 std::wstring filePathW_; 83 bool isFileExist_; 84 }; 85 } 86 }