代码之家  ›  专栏  ›  技术社区  ›  rafvasq

S3 TransferUtility上载不工作[重复]

  •  0
  • rafvasq  · 技术社区  · 6 年前

    每个log语句都返回正确的信息,但状态始终为WAITING,并且没有触发任何传输侦听器。我没有收到任何错误和S3桶继续是空的。

    我做错什么了?

    public void uploadStoredItems() {
    
        TransferUtility transferUtility = TransferUtility.builder()
                .context(AWSProvider.getInstance().getContext())
                .awsConfiguration(AWSProvider.getInstance().getConfiguration())
                .s3Client(new AmazonS3Client(AWSProvider.getInstance().getIdentityManager().getCredentialsProvider()))
                .build();
    
        try {
            for (File csvFile : csvFiles) {
                String filename = csvFile.getName(); //.substring(csvFile.getName().lastIndexOf('/') + 1);
                Log.d(TAG, "This is the filename for upload: " + filename);
    
                // FileReader reads text files in the default encoding.
                String line = null;
                FileReader fileReader = new FileReader(csvFile);
    
                // Always wrap FileReader in BufferedReader.
                BufferedReader bufferedReader = new BufferedReader(fileReader);
    
                while ((line = bufferedReader.readLine()) != null) {
                    Log.d(TAG, "Here are the lines: " + line);
                }
    
                // Always close files.
                bufferedReader.close();
    
                TransferObserver uploadObserver = transferUtility.upload(filename, csvFile);
                // Gets id of the transfer.
                Log.d(TAG, "This is the bucket: " + uploadObserver.getBucket());
                Log.d(TAG, "This is the state: " + uploadObserver.getState());
                Log.d(TAG, "This is the id: " + uploadObserver.getId());
    
                observers = transferUtility.getTransfersWithType(TransferType.UPLOAD);
                TransferListener listener = new TransferListener() {
                    @Override
                    public void onStateChanged(int id, TransferState state) {
                        Log.d(TAG, "onStateChanged: " + state.toString());
                        if (TransferState.COMPLETED == state) {
                            Log.d(TAG, "COMPLETE: " + state.toString());
                        }
                    }
    
                    @Override
                    public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
                        float percentDonef = ((float) bytesCurrent / (float) bytesTotal) * 100;
                        int percentDone = (int) percentDonef;
    
                        Log.d(TAG, "ID:" + id + " bytesCurrent: " + bytesCurrent
                                + " bytesTotal: " + bytesTotal + " " + percentDone + "%");
                    }
    
                    @Override
                    public void onError(int id, Exception ex) {
                        // Handle errors
                        Log.d(TAG, "ERROR ID:" + id + " " + ex.getMessage());
                    }
                };
    
                for (TransferObserver observer : observers) {
    
                    if (TransferState.WAITING.equals(observer.getState())
                            || TransferState.WAITING_FOR_NETWORK.equals(observer.getState())
                            || TransferState.IN_PROGRESS.equals(observer.getState())) {
                        observer.setTransferListener(listener);
                    }
    
                    Log.d(TAG, "\n observers - id: " + observer.getId() + " state: " + observer.getState() + " key: " + observer.getKey() + " bytes total: " + observer.getBytesTotal());
                }
                Log.d(TAG, "Bytes Total: " + uploadObserver.getBytesTotal());
    
            }
            csvFiles.clear();
        } catch(java.io.FileNotFoundException ex) {
            System.out.println("Unable to open file");
        } catch(java.io.IOException ex) {
            System.out.println("Error reading file");
        }
    } 
    
    0 回复  |  直到 6 年前