無法找到一些示例顯示如何使用Java允許用戶將圖像上載到Amazon S3。存儲在Amazon S3中的Java圖像上傳
的流程爲:
用戶與文件輸入表格元件的HTML形式。
該表單將所選圖像提交給Servlet。
該Servlet處理圖像並將其存儲在S3中。
任何人都知道任何好的鏈接/教程,大綱示例代碼來執行此操作?
無法找到一些示例顯示如何使用Java允許用戶將圖像上載到Amazon S3。存儲在Amazon S3中的Java圖像上傳
的流程爲:
用戶與文件輸入表格元件的HTML形式。
該表單將所選圖像提交給Servlet。
該Servlet處理圖像並將其存儲在S3中。
任何人都知道任何好的鏈接/教程,大綱示例代碼來執行此操作?
對於第三點:
它的教程很簡單。下面是我使用的一個片段:
S3Object fileObject = new S3Object(path);
fileObject.setDataInputStream(is);
s3service.putObject(bucketName, fileObject);
對於前面兩點 - look at this question
建議您使用html amazon API做到這一點。流媒體有點複雜,在大多數情況下你不需要它。
您也可以使用一個簡單的表單將文件上傳到S3 Bucket。看下面這個例子http://aws.amazon.com/articles/1434
實例形式:
<html>
<head>
<title>S3 POST Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<form action="https://s3-bucket.s3.amazonaws.com/" method="post" enctype="multipart/form-data">
<input type="hidden" name="key" value="uploads/${filename}">
<input type="hidden" name="AWSAccessKeyId" value="YOUR_AWS_ACCESS_KEY">
<input type="hidden" name="acl" value="private">
<input type="hidden" name="success_action_redirect" value="http://localhost/">
<input type="hidden" name="policy" value="YOUR_POLICY_DOCUMENT_BASE64_ENCODED">
<input type="hidden" name="signature" value="YOUR_CALCULATED_SIGNATURE">
<input type="hidden" name="Content-Type" value="image/jpeg">
<!-- Include any additional input fields here -->
File to upload to S3:
<input name="file" type="file">
<br>
<input type="submit" value="Upload File to S3">
</form>
</body>
</html>
謝謝!我已經取得了一些進展,並且正在嘗試將對象放入S3中。該文件說「如果您的數據不是文件或字符串,您可以使用任何輸入流作爲數據源,但您必須手動設置內容長度。」我正在抓取上傳的圖像作爲InputStream。我不知道如何提取Content-Length來設置它:s3FileObject.setContentLength(contentLength);我已經嘗試將InputStream轉換爲String,然後獲取內容,但最終上傳的圖像已損壞。關於如何抓住內容的任何想法? – Stamford
澄清,它實際上沒有設置內容長度的工作,只是給我一個警告。因此更好地弄清楚如何指定它:WARN [org.jets3t.service.impl.rest.httpclient.RestStorageService:1610]內容 - 未設置數據流的長度,將自動確定內存中的數據長度 – Stamford
'Integer.parseInt (request.getHeader(「Content-Length」)應該給你 – Bozho