GetObject Method

Downloads an object.

Syntax

ANSI (Cross Platform)
int GetObject(const char* lpszObjectName);

Unicode (Windows)
INT GetObject(LPCWSTR lpszObjectName);
- (void)getObject:(NSString*)objectName;
#define MID_S3CLIENT_GETOBJECT 17

IPWORKSS3_EXTERNAL int IPWORKSS3_CALL IPWorksS3_S3Client_Do(void *lpObj, int methid, int cparam, void *param[], int cbparam[], int64 *lpllVal);

Remarks

This methods downloads the object specified by ObjectName in the bucket currently selected by Bucket. If the VersionId property is non-empty, the specified version of the object is downloaded instead. The Range property can be used to download a specific range of bytes from the object.

If a stream has been specified using SetDownloadStream, the object data will be sent through it. If a stream is not specified, and LocalFile is set, the object data will be saved to the specified location; otherwise, the object data will be held by ObjectData.

To download and decrypt an encrypted object, set EncryptionAlgorithm and EncryptionPassword before calling this method.

Download Notes

In the simplest use-case, downloading an object looks like this:

s3.LocalFile = "../MyData.zip";
s3.GetObject(s3.Objects[0].Name);

Resuming Downloads

The class also supports resuming failed downloads by using the StartByte property. If a download is interrupted, set StartByte to the appropriate offset before calling this method to resume the download.

string downloadFile = "../MyData.zip";
s3.LocalFile = downloadFile;
s3.GetObject(s3.Objects[0].Name);

//The transfer is interrupted and GetObject() above fails. Later, resume the download:

//Get the size of the partially downloaded file
s3.StartByte = new FileInfo(downloadFile).Length;
s3.GetObject(s3.Objects[0].Name);

Resuming Encrypted File Downloads

Resuming encrypted file downloads is only supported when LocalFile was set in the initial download attempt.

If LocalFile is set when beginning an encrypted download, the class creates a temporary file in TempPath to hold the encrypted data until the download is complete. If the download is interrupted, DownloadTempFile will be populated with the path of the temporary file that holds the partial data.

To resume, DownloadTempFile must be populated, along with StartByte, to allow the remainder of the encrypted data to be downloaded. Once the encrypted data is downloaded it will be decrypted and written to LocalFile.

s3.LocalFile = "../MyData.zip";
s3.EncryptionPassword = "password";
s3.GetObject(s3.Objects[0].Name);

//The transfer is interrupted and GetObject() above fails. Later, resume the download:

//Get the size of the partially downloaded temp file
s3.StartByte = new FileInfo(s3.Config("DownloadTempFile")).Length;
s3.GetObject(s3.Objects[0].Name);

Error Handling (C++)

This method returns a result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message. (Note: This method's result code can also be obtained by calling the GetLastErrorCode() method after it returns.)

Copyright (c) 2022 /n software inc. - All rights reserved.
IPWorks S3 2020 C++ Edition - Version 20.0 [Build 8164]