我想在AWS上开发一个文件上传功能。
我编写了一个servlet来处理post请求,框架如下所示:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
boolean isMulti = ServletFileUpload.isMultipartContent(request);
if (isMulti) {
ServletFileUpload upload = new ServletFileUpload();
try {
FileItemIterator iter = upload.getItemIterator(request);
while (iter.hasNext()) {
FileItemStream item = iter.next();
InputStream inputStream = item.openStream();
if (item.isFormField()) {
} else {
String fileName = item.getName();
if (fileName != null && fileName.length() > 0) {
//read stream of file uploaded
//store as a temporary file
//upload the file to s3
}
}
}
} catch (Exception e) {
}
}
response.sendRedirect("location of the result page");
}我认为这些类应该用来上传文件。我试过了,但是在S3中,文件的大小总是0字节。还有其他方法可以上传多个部分的文件吗?
我指的是代码http://docs.aws.amazon.com/AmazonS3/latest/dev/llJavaUploadFile.html
发布于 2013-03-31 14:20:35
我想你有两件事--一是将整个文件放到应用程序容器中(在运行servlet的tomcat上),另一种是将文件上传到S3。
如果您能够完成上述任务中的第一个任务(您应该将文件作为java.io.File对象),那么第二个任务应该是简单明了的:
AmazonS3 s3 = new AmazonS3Client(awsCredentials);
s3.putObject(new PutObjectRequest(bucketName, key, fileObj));这是S3的简单上传。S3 Multipartupload是将整个文件分割成块并并行上传每个块的地方。S3给出了两种实现多multipartupload的方法。
https://stackoverflow.com/questions/15724644
复制相似问题