返回顶部
首页 > 资讯 > 后端开发 > JAVA >S3 Browser介绍、基础操作
  • 248
分享到

S3 Browser介绍、基础操作

java开发语言 2023-09-04 06:09:08 248人浏览 泡泡鱼
摘要

一、S3 Browser 8-1-15 简介 S3 Browser 8-1-15是Amazon S3的客户端应用程序,用于管理和操作Amazon S3存储桶和对象。 二、安装包 下载地址:百度网盘 请输入提取码 提取码:9acn 三、基础操

一、S3 Browser 8-1-15 简介

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

二、安装包

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

提取码:9acn

三、基础操作

1)连接客户端

通过S3 Browser连接上客户端。

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;    }    @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);        }    }    @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);        }    }     @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);        // 文件非空判断                File targetFile = new File(bigRealFilePath);        file.transferTo(targetFile);// 写入目标文件        // 重命名        // File newfile = ReName(targetFile);        return targetFile;    }

来源地址:https://blog.csdn.net/CodeBlues/article/details/130247721

--结束END--

本文标题: S3 Browser介绍、基础操作

本文链接: https://lsjlt.com/news/393084.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • S3 Browser介绍、基础操作
    一、S3 Browser 8-1-15 简介 S3 Browser 8-1-15是Amazon S3的客户端应用程序,用于管理和操作Amazon S3存储桶和对象。 二、安装包 下载地址:百度网盘 请输入提取码 提取码:9acn 三、基础操...
    99+
    2023-09-04
    java 开发语言
  • Vue组件基础操作介绍
    目录一、组件二、组件的创建三、组件中的data四、组件中的methods一、组件 组件是vue的重要的特征之一,可以扩展html的功能,也可以封装代码实现重复使用。 二、组件的创建 ...
    99+
    2023-01-14
    Vue组件创建 Vue组件data Vue组件methods
  • Linux介绍和基本操作
    Linux是一种自由和开放源代码的操作系统,其内核由Linus Torvalds开发,并由全球范围内的开发者社区维护和发展。Linu...
    99+
    2023-09-09
    Linux
  • VXLAN基础介绍
    VXLAN简介 VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网)采用MAC in UDP封装方式,是NVO3(Network Virtualization over Layer 3)中...
    99+
    2023-09-09
    网络 服务器 网络协议
  • Python基础---Python介绍
      python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。  2017年最新的TIOBE排行榜,Py...
    99+
    2023-01-31
    基础 Python
  • Python中字典的基础介绍及常用操作总结
    目录1.字典的介绍2.访问字典的值(一)根据键访问值(二)通过get()方法访问值3.修改字典的值4.添加字典的元素(键值对)5.删除字典的元素6.字典常见操作1.len 测量字典中...
    99+
    2024-04-02
  • Python中元组的基础介绍及常用操作总结
    目录1.元组的介绍2.访问元组3.修改元组(不可以修改的)4.元组的内置函数有count,index5.类型转换1.将元组转换为列表2.将元组转换为集合1.元组的介绍 Python...
    99+
    2024-04-02
  • Python列表的基本操作介绍
    目录1、向List中添加元素的方法1.1 Python append()方法添加元素1.2 Python extend()方法添加元素1.3 Python insert()方法插入元...
    99+
    2024-04-02
  • Python中字符串的基础介绍及常用操作总结
    目录1.字符串的介绍2.字符串的下标3.字符串切片4.字符串find()操作5.字符串index()操作6.字符串count()操作7.字符串replace()操作8.字符串spli...
    99+
    2024-04-02
  • typeScript入门基础介绍
    目录一、安装 TS二、Vscode 自动编译 ts三、入门 TS基础数据类型接口类TS 的特点: 始于 javaScript 归于 javaScript 。强大的类型系统。先进的 j...
    99+
    2024-04-02
  • ES6基础知识介绍
    目录一、ECMAScript和JavaScript关系二、let命令三、const命令四、变量的解构赋值1、数组的解构赋值2、对象的解构赋值一、ECMAScript和JavaScri...
    99+
    2024-04-02
  • TypeScript基础类型介绍
    目录1.基础类型 2.对象类型 2.1数组 2.2元组 2.3对象 3.类型推断 3.1类型联合中的类型推断 3.2上下文类型 4.类型断言 TS 的静态类型可以人为的分为两类: 基...
    99+
    2024-04-02
  • PHP基础知识介绍
    php中的整形数是有符号的,不能表示无符号整数,当整形数超出范围时,会自动从整形数转化成float数,可以用php_int_size常量来查看php整数类型所占字节,一般为4个字节,...
    99+
    2022-11-15
    PHP 基础知识
  • 基础知识:编程语言介绍、Python介绍
    2018年3月19日 今日学习内容: 1、编程语言的介绍 2、Python介绍 3、安装Python解释器(多版本共存) 4、运行Python解释器程序两种方式。(交互式与命令行式)(♥♥♥♥♥) 5、变量(♥♥♥♥♥) 6、数据类型的基...
    99+
    2023-01-31
    基础知识 编程语言 Python
  • openstack-mitaka基础环境介绍
    针对openstack环境的搭建,大致涉及如下内容安全主要包括各项服务使用的密码,这里为了防止密码混乱,我建议使用同一个密码(生产环境中,不建议这么操作)主机网络配置如下图,仅供参考学习时间同步设置针对co...
    99+
    2024-04-02
  • JavaScript基础介绍与实例
    一、什么是JavaScript JavaScript是一种具有面向对象能力的、解释性的程序设计语言。更具体一点,它是基于对象和事件驱动并具有相对安全性的客户端脚本语言。因为他不需要在...
    99+
    2024-04-02
  • Python基础语法介绍(1)
    环境配置 开发平台:Mac OS Version 10.13.2 开发工具安装 Python3.6.5 官网安装网址:https://www.python.org/downloads/ Pycharm 官网安装网址:http://w...
    99+
    2023-01-31
    语法 基础 Python
  • Python基础语法介绍(3)
    基本概念、特性 顺序存储相同/不同类型的元素 定义:使用()将元素括起来,元素之间用“,”括开 特性:不可变,不支持添加,修改,删除等操作 查询:通过下标查询元组指定位置的元素 其他 空元组定义:non_tuple = () 只包含一...
    99+
    2023-01-31
    语法 基础 Python
  • Vue守卫零基础介绍
    目录1. 全局导航守卫2. 路由独享守卫3. 组件内守卫1. 全局导航守卫 语法: # 守卫参数    + to: Route: 即将要进入的目标 路由...
    99+
    2024-04-02
  • 【基础操作】1.表操作
    -- 1.基本表操作表 drop table user1; create table user1( id   &nb...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作