【问题标题】:Android s3 SDK: Upload Large Files fail using TransferManager classAndroid s3 SDK:使用 TransferManager 类上传大文件失败
【发布时间】:2011-08-12 07:17:21
【问题描述】:

我们有几个广泛使用 S3 的 Android 应用。我们正在使用 Android SDK 中的 TranferManager 类将文件上传到 S3。它说:“E/HttpClient(6081): com.amazonaws.AmazonClientException: 无法初始化 XMLReader 的 sax 驱动程序”

我们已尝试使用 SDK 的 0.1.0 和 0.2.1 版本,但在大型 (200MB+) 上传时都会出现相同的问题。

下面是我们的代码sn-p:

ObjectMetadata attMetaData = new ObjectMetadata();
attMetaData.setContentLength(attachment.getFileSize());                                                                                             
TransferManager tm = new TransferManager(Utility.getInstance().getAWSInstance(OutboxService.this));
Transfer myUpload = tm.upload(Constants.S3.BUCKET, Attachment.mediaFolders.get(attachment.getFileType())+ attachment.getFileName(), is, attMetaData);

异常日志是:

W/HttpMethodBase( 6081): Going to buffer response body of large or unknown size. Using   getResponseBodyAsStream instead is recommended.
D/dalvikvm( 6081): GC_FOR_MALLOC freed 10875 objects / 636320 bytes in 61ms
D/NativeCrypto( 6081): Freeing OpenSSL session
D/NativeCrypto( 6081): Freeing OpenSSL session
E/HttpClient( 6081): Unable to unmarshall response (Couldn't initialize a sax driver for the XMLReader): <?xml version="1.0" encoding="UTF-8"?>
E/HttpClient( 6081): <InitiateMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Bucket>ltd_avmessaging</Bucket><Key>videos/2498992-1313049697.3gp</Key>  <UploadId>Tv397TYchM_.U_JDE7PyQcF21lyrtQ7jZYoFG08PgRt07YPn6f_LxlRHVSneGxfdFkGktBs9bIBCA.hAdRb88g--</UploadId></InitiateMultipartUploadResult>
E/HttpClient( 6081): com.amazonaws.AmazonClientException: Couldn't initialize a sax driver for the XMLReader
E/HttpClient( 6081):  at com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser.<init>(Unknown Source)
E/HttpClient( 6081):  at   com.amazonaws.services.s3.model.transform.Unmarshallers$InitiateMultipartUploadResultUnmarshaller.unmarshall(Unknown Source)
E/HttpClient( 6081):  at com.amazonaws.services.s3.model.transform.Unmarshallers$InitiateMultipartUploadResultUnmarshaller.unmarshall(Unknown Source)
E/HttpClient( 6081):  at com.amazonaws.services.s3.internal.S3XmlResponseHandler.handle(Unknown Source)
E/HttpClient( 6081):  at com.amazonaws.services.s3.internal.S3XmlResponseHandler.handle(Unknown Source)
E/HttpClient( 6081):  at com.amazonaws.http.HttpClient.handleResponse(Unknown Source)
E/HttpClient( 6081):  at com.amazonaws.http.HttpClient.executeHelper(Unknown Source)
E/HttpClient( 6081):  at com.amazonaws.http.HttpClient.execute(Unknown Source)
E/HttpClient( 6081):  at com.amazonaws.services.s3.AmazonS3Client.initiateMultipartUpload(Unknown Source)
E/HttpClient( 6081):  at com.amazonaws.services.s3.transfer.internal.MultipartUploadCallable.initiateMultipartUpload(Unknown Source)
E/HttpClient( 6081):  at com.amazonaws.services.s3.transfer.internal.MultipartUploadCallable.call(Unknown Source)
E/HttpClient( 6081):  at com.amazonaws.services.s3.transfer.internal.MultipartUploadCallable.call(Unknown Source)
E/HttpClient( 6081):  at com.amazonaws.services.s3.transfer.internal.TransferStateUpdatingCallable.call(Unknown Source)
E/HttpClient( 6081):  at com.amazonaws.services.s3.transfer.internal.TransferStateUpdatingCallable.call(Unknown Source)
E/HttpClient( 6081):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
E/HttpClient( 6081):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)

E/HttpClient(6081): 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) E/HttpClient(6081):在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) E/HttpClient(6081): 在 java.lang.Thread.run(Thread.java:1102)

【问题讨论】:

    标签: android amazon-s3 sax


    【解决方案1】:

    在使用 S3 时,您似乎可以通过设置以下系统属性来解决很多此类 SAX 解析器错误。

    System.setProperty("org.xml.sax.driver", "org.xmlpull.v1.sax2.Driver");

    (取自https://forums.aws.amazon.com/thread.jspa?messageID=251760&#251760

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-31
      • 2014-06-13
      • 1970-01-01
      • 1970-01-01
      • 2020-04-23
      • 2016-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多