首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文件上载到S3

问将文件上载到S3
EN

Stack Overflow用户
提问于 2013-03-30 23:28:07
回答 1查看 3.4K关注 0票数 1

我想在AWS上开发一个文件上传功能。

我编写了一个servlet来处理post请求,框架如下所示:

代码语言:javascript
复制
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字节。还有其他方法可以上传多个部分的文件吗?

  1. InitiateMultipartUploadRequest
  2. InitiateMultipartUploadResult
  3. UploadPartRequest
  4. CompleteMultipartUploadRequest

我指的是代码http://docs.aws.amazon.com/AmazonS3/latest/dev/llJavaUploadFile.html

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-31 14:20:35

我想你有两件事--一是将整个文件放到应用程序容器中(在运行servlet的tomcat上),另一种是将文件上传到S3。

如果您能够完成上述任务中的第一个任务(您应该将文件作为java.io.File对象),那么第二个任务应该是简单明了的:

代码语言:javascript
复制
AmazonS3 s3 = new AmazonS3Client(awsCredentials);
s3.putObject(new PutObjectRequest(bucketName, key, fileObj));

这是S3的简单上传。S3 Multipartupload是将整个文件分割成块并并行上传每个块的地方。S3给出了两种实现多multipartupload的方法。

  • 低水平 -在这里,你需要分块和上传每个部分。这使用了您提到的类,如InitiateMultipartUploadRequest
  • 高水平 -在本S3中,使用TransferManager类抽象分块/上传等过程。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15724644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档