文件上传之oss服务器上传文件简笔

Posted Rhythm黎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件上传之oss服务器上传文件简笔相关的知识,希望对你有一定的参考价值。

阿里云的oss服务器存储文件:

1.在yml配置文件中配置:阿里云oss存储配置信息

1 oss:
2   endpoint: oss-cn-xxxxxxxx.aliyuncs.com
3   accessKey: LTA....
4   accessKeySecret: LD.....
5   bucketName: xxxxxx6   staticDomain: ??

2.在配置类中读取yml里面的配置信息i

@Configuration
public class OssBootConfiguration {

    @Value("${oss.endpoint}")
    private String endpoint;
    @Value("${oss.accessKey}")
    private String accessKeyId;
    @Value("${oss.accessKeySecret}")
    private String accessKeySecret;
    @Value("${oss.bucketName}")
    private String bucketName;
    @Value("${oss.staticDomain}")
    private String staticDomain;


    @Bean
    public void initOssBootConfiguration() {
        OssBootUtil.setEndPoint(endpoint);
        OssBootUtil.setAccessKeyId(accessKeyId);
        OssBootUtil.setAccessKeySecret(accessKeySecret);
        OssBootUtil.setBucketName(bucketName);
        OssBootUtil.setStaticDomain(staticDomain);
    }
}

3.初始化oss

  private static OSSClient initOSS(String endpoint, String accessKeyId, String accessKeySecret) {
        if (ossClient == null) {
            ossClient = new OSSClient(endpoint,
                    new DefaultCredentialProvider(accessKeyId, accessKeySecret),
                    new ClientConfiguration());
        }
        return ossClient;
    }

4.上传:

       //初始化oss客户端
initOSS(endPoint, accessKeyId, accessKeySecret); StringBuilder fileUrl = new StringBuilder(); try { //对象锁 // synchronized (file) { //后缀前的数据 String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(‘.‘)); //拼接文件绝对路径 String fileUrl = fileUrl.append(fileDir + fileName); PutObjectResult result = ossClient.putObject(bucketName, fileUrl, file.getInputStream()); // 设置权限(公开读) ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead); if (result != null) { System.out.println("------OSS文件上传成功------" + fileUrl); } // } } catch (IOException e) { e.printStackTrace(); return null; }

5.注意点:

考虑到是一个公共上传,若是并发调用考虑加对象锁,总体来说,要有oss服务器,先初始化oss客户端 然后生成文件路径进行上传

6.删除文件服务器上的指定目录下文件:

            //初始化容器
            initOSS(endPoint, accessKeyId, accessKeySecret);
            //删除路径
            String url = url;
            log.info("删除文件服务器上的文件路径为:{}",url);
            //删除文件服务器上的文件
            ossClient.deleteObject(bucketName, url);

7.检查是否上传成功 可以下载oss可视化工具 登录上去可以查看  上传 删除  复制文件路径等。为所欲为的人为操作

 

8.补充:

官网文档:https://help.aliyun.com/document_detail/84781.html?spm=a2c4g.11186623.6.707.5a0c1bd4CT02Ig

pom文件引用:

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>2.8.3</version>
</dependency>

或者

<!-- aliyun oss -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>${aliyun.oss.version}</version>---配置在其他的地方 可以点进去查看版本 现在才知道。。。
</dependency>
 

 




以上是关于文件上传之oss服务器上传文件简笔的主要内容,如果未能解决你的问题,请参考以下文章

如何使用php解决iis错误500上传文件

2020/1/30 PHP代码审计之文件上传漏洞

java Ftp上传创建多层文件的代码片段

JS创建文件并上传服务器

《白帽子讲WEB安全》学习笔记之第8章 文件上传漏洞

Web安全之文件上传漏洞