DownloadFile Method
Downloads a file resource.
Syntax
box.downloadFile(fileId, [callback])
Callback
The 'callback' parameter specifies a function which will be called when the operation completes (or an error is encountered). If the 'callback' parameter is not specified, then the method will block and will not return until the operation completes (or an error is encountered).
The callback for this method is defined as:
function(err){ }
'err' is the error that occurred. If there was no error, then 'err' is 'null'.
'err' has 2 properties which hold detailed information:
err.code err.message
Remarks
This method downloads the file resource specified by FileId.
The DownloadType property can be used to control whether this method downloads the file contents (default) or a file thumbnail. Refer to DownloadType for more information.
If LocalFile is set, the file will be saved to the specified location; otherwise, the file data will be held by ResourceData.
To download and decrypt an encrypted file, set EncryptionAlgorithm and EncryptionPassword before calling this method.
Download Notes
In the simplest use-case, downloading a file looks like this:
box.LocalFile = "../MyFile.zip"; box.DownloadFile(box.Resources[0].Id);
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 = "../MyFile.zip"; box.LocalFile = downloadFile; box.DownloadFile(box.Resources[0].Id); //The transfer is interrupted and DownloadFile() above fails. Later, resume the download: //Get the size of the partially downloaded file box.StartByte = new FileInfo(downloadFile).Length; box.DownloadFile(box.Resources[0].Id);
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.
box.LocalFile = "../MyFile.zip"; box.EncryptionPassword = "password"; box.DownloadFile(box.Resources[0].Id); //The transfer is interrupted and DownloadFile() above fails. Later, resume the download: //Get the size of the partially download temp file box.StartByte = new FileInfo(box.Config("DownloadTempFile")).Length; box.DownloadFile(box.Resources[0].Id);