【发布时间】:2014-09-11 04:52:12
【问题描述】:
我正在使用 Java REST 服务进行文件上传。 该文件应该登陆我的服务器,然后移动到 Amazon S3 存储桶。
上传到服务器没问题,但是第二次调用另一个方法不起作用。 我假设是因为存在超时问题?
将文件移动到亚马逊的代码在另一个应用程序中工作,但我无法让它在我的 REST 项目中工作。
方法如下:
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(@FormDataParam("file") InputStream inputStream,
@FormDataParam("file") FormDataContentDisposition file, @FormDataParam("filename") String filename){
Logger log = Logger.getLogger("Mike");
String response = "";
File f = null;
try {
final String FILE_DESTINATION = "C://uploads//" + file.getFileName();
f = new File(FILE_DESTINATION);
OutputStream outputStream = new FileOutputStream(f);
int size = 0;
byte[] bytes = new byte[1024];
while ((size = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, size);
}
outputStream.flush();
outputStream.close();
log.info("upload complete for initial file!");
//move file to Amazon S3 Bucket.
AmazonS3 s3 = new AmazonS3Client(
new ClasspathPropertiesFileCredentialsProvider());
log.info("trying put request");
PutObjectRequest request = new PutObjectRequest("site.address.org","/pdf/PDF_Web_Service/work/"+f.getName(),f);
log.info(f.getName());
log.info(f.getAbsolutePath());
s3.putObject(request);
log.info("put request complete");
response = "File uploaded " + FILE_DESTINATION;
} catch (Exception e) {
e.printStackTrace();
}
return Response.status(200).entity(response).build();
}
具体来说,这是不工作的部分。我也没有收到任何日志信息:
//move file to Amazon S3 Bucket.
AmazonS3 s3 = new AmazonS3Client( new ClasspathPropertiesFileCredentialsProvider()); log.info("trying put request"); PutObjectRequest request = new PutObjectRequest("site.address.org","/pdf/PDF_Web_Service/work/"+f.getName(),f); log.info(f.getName()); log.info(f.getAbsolutePath()); s3.putObject(request); log.info("put request complete");
【问题讨论】:
-
“我认为是因为存在超时问题?”您为什么不捕获 http 响应代码,以便您知道这是否是问题
-
@Humdinger 我对 REST 有点陌生。在我的代码中,我明确将响应代码设置为 200。如何获得“自然”响应代码?
-
当你超时时,你永远不会进入return语句。 Java 自动设置超时代码 (504) 并返回它。如果你得到一个 200 的回报,这意味着你得到了回报声明,超时不是你的问题。
标签: java web-services rest amazon-web-services