我正在尝试在Xamarin iOS iPad App中下载大小为85MB的XML文件。有时下载成功完成,但其他时候下载挂起之间没有任何错误。进度停止。
AWS SDK版本:
AWSSDK.S3 3.3.25.1
AWSSDK.Core 3.3.27.3
我尝试了两种方法。这是我的代码:
1- GetObject
development
2- TransferUtility
var clientRequest = new AmazonS3Client(AWSAccessKey,
AWSSecretKey,
Amazon.RegionEndpoint.USEast1);
try
{
GetObjectRequest request = new GetObjectRequest
{
BucketName = AWSBucketName,
Key = Path + "File1.xml"
};
using (GetObjectResponse response = await clientRequest.GetObjectAsync(request))
{
response.WriteObjectProgressEvent += displayDownloadProgress;
await response.WriteResponseStreamToFileAsync(destPath, false);
}
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
}
我还要附加应用程序输出日志。输出日志显示线程问题。当线程在下载过程之间开始完成时,则下载未成功完成。但是,如果线程中没有任何活动,则下载成功。
var utility = new TransferUtility(cas.AWSAccessKey,
cas.AWSSecretKey,
Amazon.RegionEndpoint.USEast1);
TransferUtilityDownloadRequest dr = new TransferUtilityDownloadRequest();
dr.BucketName = AWSBucketName;
dr.Key = Path + "File1.xml";
dr.FilePath = destPath;
dr.WriteObjectProgressEvent += displayDownloadProgress;
await utility.DownloadAsync(dr);
public void displayDownloadProgress(object sender, WriteObjectProgressArgs args)
{
Debug.WriteLine("Download Progress: " + (args.PercentDone));
InvokeOnMainThread(() =>
{
BTProgressHUD.ShowContinuousProgress("Download Progress: " + args.PercentDone.ToString() + "%", ProgressHUD.MaskType.Gradient);
});
if (args.PercentDone >= 100)
{
BTProgressHUD.Dismiss();
}
}