У нас есть пара приложений для Android, которые широко используют S3. Мы используем класс TranferManager из Android SDK для загрузки файлов в S3. В нем говорится: «E / HttpClient (6081): com.amazonaws.AmazonClientException: не удалось инициализировать драйвер саксофона для XMLReader»
Мы пробовали использовать SDK версии 0.1.0 и 0.2.1, и обе они вызывают одну и ту же проблему при больших загрузках (более 200 МБ).
Ниже приведен фрагмент нашего кода:
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)