V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fragrans23
V2EX  ›  Amazon Web Services

使用 aws- Java -sdk-s3 怎么 aws s3 上断点下载文件,那里有比较好的例子吗?

  •  
  •   fragrans23 · 2022-07-10 03:04:57 +08:00 · 1848 次点击
    这是一个创建于 859 天前的主题,其中的信息可能已经有所发展或是发生改变。

    下载文件原先使用下面的代码:

    S3Object object = s3.getObject(bucketName, fileKey);
            S3ObjectInputStream objectContent = object.getObjectContent();
            OutputStream out =null;
            try {
                response.setCharacterEncoding("utf-8");
                response.setContentType("multipart/form-data");
                response.setHeader("Content-Disposition",
                        "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, downloadName));
                out = response.getOutputStream();
                byte[] buf = new byte[1024];
                int len;
                while ((len = objectContent.read(buf)) > 0) {
                    out.write(buf, 0, len);
                }
                response.flushBuffer();
    

    s3 内有这么一个方法可以获取文件某一断数据:

    etObjectRequest rangeRequest = new GetObjectRequest(bucketName, fileKey)
                    .withRange(start, end);
            S3Object object = s3.getObject(rangeRequest);
            S3ObjectInputStream objectContent = object.getObjectContent();
    

    如果下载了某段数据,怎么整合起来形成一个完整文件? 思路应该是下载各个分片合并,或在某个临时文件后面追加内容?哪里有比较完整的代码吗?希望各位朋友能够帮忙解答

    1 条回复    2022-07-10 16:18:56 +08:00
    lmshl
        1
    lmshl  
       2022-07-10 16:18:56 +08:00
    https://docs.oracle.com/javase/7/docs/api/java/nio/channels/SeekableByteChannel.html

    SeekableByteChannel position(long newPosition)
    // Sets this channel's position.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2567 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:44 · PVG 23:44 · LAX 07:44 · JFK 10:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.