S3 Browser介绍、基础操作

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

一、S3 Browser 8-1-15 简介

S3 Browser 8-1-15是Amazon S3的客户端应用程序,用于管理和操作Amazon S3存储桶和对象。

二、安装包

下载地址:百度网盘 请输入提取码

提取码:9acn

三、基础操作

1)连接客户端

1、通过S3 Browser连接上客户端。

2、Account Name暂时不知道作用,应该是创建account时候固定的名称。

这里我用的已经创建的参数进行连接。

 

2)上传、下载

1、现在代码里用的桶是itpms的,路径需要自己创建。

2、创建路径

 支持链式创建目录:

3、上传文件

可以可视化界面上传,也可以直接拖拽文件到界面。

 4、下载文件

选中文件,点击Download

 

JAVA代码-上传下载

private boolean s3Enable = false;

@PostConstruct
    private synchronized void init() throws AppException {
        s3Enable = Boolean.valueOf(ConfigUtil.getConfigFromPropertiesFirst("CONFIG_S3_ENABLE", "true"));

        if (s3Enable) {
            SysParameter accessKeyParamter = "S3_ACCESSKEY";
            SysParameter secretKeyParamter = "S3_SECRETKEY";
            SysParameter bucketNameParamter = "S3_BUCKETNAME";
            SysParameter endpointParamter = "S3_ENDPOINT";
            SysParameter bufferSizeParamter = "S3_BUFFER");
            SysParameter archiveWsdlLocationParamter = "CONFIG_ARCHIVE_WSDL_LOCATION";
            SysParameter s3EnableParameter = "CONFIG_S3_ENABLE";
            checkSysParameter(accessKeyParamter, secretKeyParamter, bucketNameParamter, endpointParamter,
                bufferSizeParamter, archiveWsdlLocationParamter, s3EnableParameter);

            accessKey = accessKeyParamter.getPvalue();
            secretKey = secretKeyParamter.getPvalue();
            bucketName = bucketNameParamter.getPvalue();
            endpoint = endpointParamter.getPvalue();
            bufferSize = Integer.valueOf(bufferSizeParamter.getPvalue());
            archiveWsdlLocation = archiveWsdlLocationParamter.getPvalue();
            s3Enable = Boolean.valueOf(s3EnableParameter.getPvalue());

            AmazonS3 conn = getS3();
            if (!conn.doesBucketExist(bucketName)) {
                LOGGER.info("Bucket name:[{}] 不存在,新建该Bucket", bucketName);
                conn.createBucket(bucketName);
            }
            LOGGER.info("初始化S3客户端完成,Endpoint:[{}], Bucket name:[{}],", endpoint, bucketName);
        } else {
            LOGGER.info("不启用S3客户端。");
        }

    }


private AmazonS3 getS3() {
        AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
        ClientConfiguration clientConfig = new ClientConfiguration();
        clientConfig.setProtocol(Protocol.HTTP);
        EndpointConfiguration endpointConfiguration = new EndpointConfiguration(endpoint, Regions.CN_NORTH_1.getName());

        AmazonS3 conn = AmazonS3Client.builder().withEndpointConfiguration(endpointConfiguration)
            .withClientConfiguration(clientConfig).withCredentials(new AWSStaticCredentialsProvider(credentials))
            // 是否使用路径方式
            .withPathStyleAccessEnabled(Boolean.TRUE)
            .build();
        return conn;
    }


/**
     * 文件下载
     *
     * @param path
     * @param response
     * @throws AppException
     */
    @Override
    public void fileDownload(String path, HttpServletResponse response) throws AppException {
        // path是指欲下载的文件的路径。
        File file = new File(path);
        String fileName = file.getName();

        // 取得文件名。
        LOGGER.info("下载文件名:{}", fileName);
        LOGGER.info("下载S3文件路径:{}", path);

        // 如果本地有存,无需下载
        if (file.exists()) {
            try (InputStream is = new BufferedInputStream(new FileInputStream(file))) {
                downloadFile(response, fileName, is);
            } catch (Exception e) {
                throw new AppException("Download file err. ", e);
            }
        } else {
            if (s3Enable) {
                path = formatS3Filename(path);

                LOGGER.info("format之后S3文件路径:{}", path);
                AmazonS3 conn = getS3();

                try {

                    S3Object s3Object = conn.getObject(new GetObjectRequest(bucketName, path));
                    if (s3Object != null) {
                        LOGGER.debug("s3_content-type : {}", s3Object.getObjectMetadata().getContentType());
                        LOGGER.debug("s3_etag : {}", s3Object.getObjectMetadata().getETag());
                        LOGGER.debug("s3_content_length : {}", s3Object.getObjectMetadata().getContentLength());

                        // 创建文件夹和文件
                        FileUtils.createFolderAndFile(file);
                        try (InputStream is = s3Object.getObjectContent();
                            OutputStream os = new BufferedOutputStream(new FileOutputStream(file))) {
                            IOUtils.copy(is, os);
                        } catch (IOException e) {
                            LOGGER.error("下载文件报错", e);
                            throw new AppException("下载文件报错", e);
                        }

                        if (file.exists()) {
                            try {
                                InputStream downloadFileIs = new FileInputStream(file);
                                downloadFile(response, fileName, downloadFileIs);
                            } catch (FileNotFoundException e) {
                                throw new AppException("下载文件报错", e);
                            }
                        }
                    }
                } catch (SdkClientException | IOException e) {
                    throw new AppException("下载文件失败", e);
                }
            }

        }
    }

private String formatS3Filename(String path) {
        if (path == null) {
            return null;
        }
        path = FilenameUtils.separatorsToUnix(path);
        path = path.startsWith("/") ? path.substring(1) : path;
        return path;
    }


private void downloadFile(HttpServletResponse response, String fileName, InputStream is) throws AppException {
        try (InputStream inputStream = new BufferedInputStream(is);
            OutputStream outputStream = response.getOutputStream()) {
            fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
            response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", fileName));
            response.setContentType("multipart/form-data");
            response.setCharacterEncoding("UTF-8");

            byte[] buffer = new byte[bufferSize];
            int length = -1;
            while ((length = inputStream.read(buffer)) > 0) {
                outputStream.write(buffer, 0, length);
            }

        } catch (IOException e) {
            LOGGER.error("Download file from s3 err. ", e);
            throw new AppException("下载文件失败", e);
        }
    }



/**
     * 文件上传
     *
     * @param request
     * @throws IOException
     * @throws IllegalStateException
     */
    @Override
    public File fileUpload(String uploadDir, HttpServletRequest request) throws AppException {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
        MultipartFile file = multipartRequest.getFile("file");
        if (file == null) {
            return null;
        }
        try {
            File targetFile = FileDownAndUpload.filedUpload(uploadDir, multipartRequest);
            String bigRealFilePath = targetFile.getPath();
            if (s3Enable) {
                return fileSaveByPath(bigRealFilePath, targetFile);
            } else {
                return targetFile;
            }
        } catch (Exception e) {
            LOGGER.error("上传文件失败", e);
            throw new AppException("上传文件失败", e);
        }

    }



 /**
     * 文件上传,仅支持服务器本地存储,不支持分布式存储,在分布式环境下可能找不到文件。
     *
     * @param request
     * @throws IOException
     * @throws IllegalStateException
     */
    @Deprecated
    public static File filedUpload(String uploadDir, HttpServletRequest request)
        throws AppException, IllegalStateException, IOException {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
        MultipartFile file = multipartRequest.getFile("file");
        // file= new String(file.getBytes("ISO-8859-1 ","UTF-8"));
        if (file == null) {// step-2 判断file
            return null;
        }
        String orgFileName = file.getOriginalFilename();
        orgFileName = (orgFileName == null) ? "" : orgFileName;
        Pattern p = Pattern.compile("\\s|\t|\r|\n");
        Matcher m = p.matcher(orgFileName);
        orgFileName = m.replaceAll("_");
        if (!(new File(uploadDir).exists())) {
            new File(uploadDir).mkdirs();
        }
        String sep = System.getProperty("file.separator");

        String timestring = DateUtils.formatDate(new Date(), "yyyyMMddHHmmssSSS");

        String bigRealFilePath =
            uploadDir + (uploadDir.endsWith(sep) ? "" : sep) + timestring + "_" + file.getOriginalFilename();

        logger.info("上传文件路径:" + bigRealFilePath);

        // 文件非空判断
        /* if (file.getSize() > 0) { */
        File targetFile = new File(bigRealFilePath);

        file.transferTo(targetFile);// 写入目标文件

        // 重命名
        // File newfile = ReName(targetFile);

        return targetFile;
    }

S3 Browser Pro 12.0.1: Key Features and Licensing Insights for Efficient Cloud Management S3 Browser Pro 12.0.1作为专业云存储管理工具,显著提升企业级用户的工作效率,支持多线程处理、生命周期规则管理和命令行同步等高级功能。其单机终身授权模式为企业提供高性价比解决方案,同时优化了Google Cloud兼容性和传输加速性能,确保数据安全与合规性。 阅读详情

相关推荐

别再让MinIO图片只能下载了!手把手教你用S3 Browser配置预览(附Java代码)

本文详细解析了MinIO文件无法预览的问题根源,并提供了从S3 Browser配置到Java代码实现的完整解决方案。通过设置正确的Content-Type,确保图片等文件可直接在浏览器中预览,提升用户体验。文章还涵盖了批量更新、缓存优化等高级应用技巧,帮助开发者彻底解决MinIO预览难题。

weixin_33488239的博客 307

对象存储:5款好用S3客户端,推荐给你

s3curl 是命令行工具,开源免费使用,非常轻量,也是我平时用的最多的一个工具。本质这个不算一个客户端工具,而是针对s3协议封装的文件网关,本质上是一个 c/c++ 实现的 fuse 项目,对外提供 posix 文件系统,后接的通过 s3 协议连接的对象存储,s3fs 只是做了一个协议转换。Cyberduck是一款带图形界面的FTP客户端软件,目前有windows版和mac版, 支持 FTP, SFTP, WebDAV, 云文件, Google Docs 和 Amazon S3 浏览器等相关协议。

GIS摆渡人 4400

S3Browser配置、使用与允许跨域设置

背景:ceph+S3是一套常用的对象存储方式,S3提供的接口比ceph底层的librados用起来更方便,而且支持Windows使用,尤其是S3做了存储服务的客户端S3Browse,可以十分方便的使用和管理你的bucket。 1.S3Browser配置 下载安装好S3Browser以后,点击左上角account,add或者manage account,在下图页面进行配置,配置对了就能连接上。 如果是与ceph对接,那么中间的access_key和secret_key就填你创建radosgw-admin u

weixin_42126962的博客 1万+

【S3 Browser 详细使用指南】 Windows 平台下的 AWS S3 管理利器

S3 Browser是一款专为Windows设计的Amazon S3图形化管理工具,提供比AWS控制台更高效的批量操作、断点续传和权限管理功能。本文详细介绍了其安装配置、账户连接、基本操作(如存储桶管理、文件传输)和高级功能(权限管理、数据同步、版本控制等),并提供了性能优化技巧、常见问题解决方案及安全、成本、操作规范等最佳实践建议,帮助用户充分利用这款工具提升S3管理效率。

weixin_74256690的博客 5015

Windows平台使用S3Browser连接兼容的对象存储

本文记录了在Windows平台使用S3Browser连接兼容的对象存储的过程。

forestqq的博客 4886

【免费下载】 S3Browser: 简单易用的S3对象存储管理工具

S3Browser是一款开源、免费、跨平台的S3对象存储管理工具,由[@powdahound](https://link.gitcode.com/i/66b93b52c97fa479a45094a117f98066)开发并维护。该项目旨在为用户提供一个简单、直观且功能丰富的界面,以方便管理和操作AWS S3、Minio等兼容S3的对象存储服务。 ## 主要功能 S3Browser支持以下主要功...

gitblog_00001的博客 5078

【免费下载】 S3 Browser 介绍基础操作指南

本文档旨在介绍 S3 Browser 的基本功能和操作步骤,帮助用户快速上手使用该工具进行 Amazon S3 存储桶和对象的管理。 ## 1. S3 Browser 简介 S3 Browser 是一款适用于 Amazon S3 的客户端应用程序,主要用于管理和操作 Amazon S3 存储桶和对象。它提供了一个直观的用户界面,使用户能够轻松地上传、下载、删除和管理存储在 S3 中的文件和文件...

gitblog_06555的博客 541

用S3Browser对S3做数据同步

参考文档:https://s3browser.com/s3cmd.aspx#sync 首先下载安装S3 Browser, 然后添加S3账户信息 保存后试试看能否访问bucket及文件 成功后就可以开始写脚本,比较简单: s3browser-con.exe sync your-s3-broswer-account-name s3:bucket/folder/s

数据之路 6148

S3 Browser安装流程

(2)准备华北一:相关文档链接:准备公钥私钥:(3)填写对应信息链接上就好了其他相关操作

2302_79680517的博客 463

S3Browser使用手册

来源:https://sf.163.com/help/documents/105041517828296704。点击对象是抛403错误是正常的,因为我们不支持对象的Acl,不允许此操作。只支持图中的1和2,且不能同时使用,如果同时选中,以第一个为准。选中项下载的对象,右键,选择下载,选择文件加就会开始下载。如果选择目的桶为对象所在桶,那么就说明都不做。2.设置桶名:桶的命名规范参见API文档。点击Upload,选择想上传的文件即可。点击删除桶,输入桶名,勾选复选框。

CSDN资源内容 1167

AWS S3常用功能总结回顾

Aws s3常用功能总结与代码示例

u013551615的博客 2382

腾讯云对象存储的创建和S3 Browser的使用

对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。

Ilson_的博客 3383

从零开始:如何利用S3 Browser Pro高效管理你的云存储资源

本文详细介绍了如何利用S3 Browser Pro高效管理Amazon S3和CloudFront云存储资源。从安装配置、多账户管理到数据安全与传输优化,全面解析了该Windows客户端的核心功能和实战应用场景,帮助用户提升云存储管理效率。

weixin_29216049的博客 271

从S3Browser到Python脚本:我如何用Boto3把重复的文件管理任务自动化(实战心得)

本文分享了如何利用Python的Boto3库将S3文件管理任务自动化,从图形界面转向脚本化的实战经验。通过具体代码示例,展示了文件归档、过期清理等高频操作的自动化实现,显著提升效率并减少人为错误。适合中小团队开发者学习如何用Python简化重复工作流程。

weixin_30836759的博客 451

S3数据桶是哪方神圣

华丽的概念最终还是要落地使用的,而工具的可视化使用过程会让大家更加容易的理解概念。本文不是说S3协议不好,相反通过工具的验证,大家会发现S3的并行上传下载速度非常快,对于文件管理比FTP强很多。总之,软件其实是一门实践型的工程学,学习软件技术光看概念不动手是不行的,而图形化工具会让动手更快捷更直接。最后祝大家学习使用软件顺利!!!!运维桌面工具套装软件DESK(https://www.deskui.com)集办公、运维、开发场景常用功能于一体的桌面工具软件。

DeskUI 1773

轻量级跨平台S3管理工具:解放生产力的对象存储可视化方案

开发者还在为`aws s3 ls`命令的冗长输出发愁时,设计师正对着MinIO的API文档抓耳挠腮——**对象存储管理工具**的核心价值,本应是让技术与非技术用户都能高效掌控数据资产。S3Browser以「轻量级+跨平台」双引擎驱动,通过可视化界面消除云存储操作门槛,让AWS S3/MinIO资源管理像浏览本地文件夹一样简单。 ### 💡 为什么选择S3Browser? 传统管理方式

gitblog_00351的博客 981

Amason S3 (一)

Amason S31.简介2.优势3.处理工具S3 BrowserCloudBerry Explorer4. .NET开发 1.简介 Amazon S3(Simple Storage Service),是一个公开的服务云存储,云是一个抽象的概念,表示松散连接在一起的计算机组,这些计算机共同执行某项任务或者服务。Web 应用程序开发人员可以使用它存储数字资产,包括图片、视频、音乐和文档。提供一个 RESTful API 以编程方式实现与该服务的交互。 通过<key,value>键值对对每个文件唯一

RandyOliver's House 501

【文件服务】【AWS 亚马逊S3】---- S3对象存储可视化管理工具客户端大全+详细使用方法

的官方下载与安装步骤,均为官方渠道,安全可靠。以下是Windows系统下。

朱朱博客,分享技术 792
上一篇: JAVA后端使用echarts生成折线表格转成图片保存在本地
下一篇: 基于SpringBoot用iText7将HTML转成PDF添加页眉页脚水印
从乌托邦醒来
博客等级 码龄5年 31粉丝 26原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值