我正在从亚马逊s3中检索一个对象。如何在android中获取检索到的对象的元数据?从元数据中,我想知道该对象是图像还是非图像(如pdf,csv,...)
感谢您的帮助。
我使用以下代码获取文件夹下的名称列表。
AmazonS3Client s3Client;
s3Client = new AmazonS3Client(new BasicAWSCredentials(
Constants.ACCESS_KEY_ID, Constants.SECRET_KEY));
ObjectListing objListOfPath = s3Client.listObjects(
Constants.getPictureBucket(), path);
List<S3ObjectSummary> keyListOfObjectSummaries = objListOfPath
.getObjectSummaries();
ObjectListing next = s3Client.listNextBatchOfObjects(objListOfPath);
keyListOfObjectSummaries.addAll(next.getObjectSummaries());
System.out.println("keyListOfObjectSummaries size() "
+ keyListOfObjectSummaries.size());
ArrayList<String> arrListImageName = new ArrayList<String>();
if (keyListOfObjectSummaries.size() > 0) {
for (int i = 0; i < keyListOfObjectSummaries.size(); i++) {
String imagePath = keyListOfObjectSummaries.get(i).getKey();
arrListImageName.add(strImageName);
}
for (int i = 0; i < arrListImageName.size(); i++) {
System.out.println("Index " + i + " image Name "
+ arrListImageName.get(i));
String strReceiptImageName = arrListImageName.get(i);
String strReceiptNameExtension = extractReceiptNameExtension(arrListImageName.get(i));
S3Object objectReceiptFromAmazonS3 = s3Client.getObject(
Constants.PICTURE_BUCKET, keyListOfObjectSummaries
.get(i).getKey());
InputStream inputStreamReceiptObject = objectReceiptFromAmazonS3
.getObjectContent();
解决方案:
System.out.println("CONTENT TYPE " +objectReceiptFromAmazonS3.getObjectMetadata().getContentType());
感谢Harshit和sanket!
答案 0 :(得分:2)
这对我来说很有用,可以从一个简单的servlet下载S3中托管的文件。
private static final int BYTES_DOWNLOAD = 1024;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String key = request.getParameter("key");
HttpSession session = request.getSession();
String bucketname = (String) session.getAttribute("BUCKETNAME");
AmazonS3 s3 = new AmazonS3Client(Constants.credentials);
Region usWest2 = Region.getRegion(Regions.US_WEST_2);
s3.setRegion(usWest2);
S3Object object = s3.getObject(new GetObjectRequest(bucketname, key));
response.setContentType(object.getObjectMetadata().getContentType());
response.setHeader("Content-Disposition","attachment;filename="+object.getKey());
InputStream is = object.getObjectContent();int read=0;
byte[] bytes = new byte[BYTES_DOWNLOAD];
OutputStream os = response.getOutputStream();
while((read = is.read(bytes))!= -1){
os.write(bytes, 0, read);
}
os.flush();
os.close();
}
答案 1 :(得分:1)
使用这几行:
ObjectMetadata metaData = new ObjectMetadata();
metaData.addUserMetadata("key", key of your file);
System.out.println("Content type is========"+metaData.getContentType());
这可能对你有帮助..