2016-01-23 138 views
0

我正在嘗試使用MD5內容生成AWS預定網址。該URL生成,但是當我用它來上傳失敗,HTTP 403錯誤Java AWS s3:如何使用Md5預簽名url設置和上傳內容

Java代碼來生成presigned URL內容如下:

GeneratePresignedUrlRequest generatePresignedUrlRequest = new  GeneratePresignedUrlRequest(bucketName, key, httpMethod); 
    byte[] resultByte = DigestUtils.md5(/*byte array*/);  
    String streamMD5 = new String(java.util.Base64.getEncoder().encode(resultByte)); 
    generatePresignedUrlRequest.setContentMd5(streamMD5); 
    s3Client.generatePresignedUrl(generatePresignedUrlRequest); 

Java代碼上傳使用預籤數據url:

HttpURLConnection connection; 
    try { 
     connection = (HttpURLConnection) url.openConnection(); 
     connection.setDoOutput(true); 
     connection.setRequestMethod("PUT"); 
     OutputStream output = connection.getOutputStream(); 
     output.write(getImage()); 
     output.flush(); 
     assertEquals(OK, connection.getResponseCode()); 
    } catch (IOException e) { 
     LOGGER.info("Exception: {}", e); 
    } 

我不確定需要在上傳代碼上添加什麼才能使其工作。

回答

0

我能夠加入下面這段代碼來解決它:

byte[] resultByte = DigestUtils.md5(/*byte array*/);  
String streamMD5 = new String(java.util.Base64.getEncoder().encode(resultByte)); 
connection.setRequestProperty("content-md5", streamMD5); 

確保爲被用於設置「內容-MD5」頭,您添加同時建立預標識的URL MD5碼是相同的。

相關問題