使用sdk上传文件到云服务器

房东的猫 提交于 2020-01-19 19:00:52

我在项目中需要上传图片到云服务器,后经过实践,已经大功告成,这里对每一步的操作都记录一下。
首先我们先找一个云服务器,我用的是百度智能云点击链接可以进入页面:
在这里插入图片描述
我们首先创建对象存储
在这里插入图片描述
在这里插入图片描述
新建一个bucket:
在这里插入图片描述
记住我们的bucket的名称,我写的是listj,之后点击获取Aeccess Key
在这里插入图片描述
复制粘贴好,之后要用!!
在这里插入图片描述

代码:

安装SDK工具包

使用Maven安装
在Maven的pom.xml文件中添加bce-java-sdk的依赖:

<dependency>
    <groupId>com.baidubce</groupId>
    <artifactId>bce-java-sdk</artifactId>
    <version>0.10.92</version>
</dependency>

之后我们创建一个provider,用来链编写上传文件的方法,以及初始话化等操作,在这里插入图片描述

CloudProvider.java

package com.listj.community.community.provider;

import com.baidubce.auth.DefaultBceCredentials;
import com.baidubce.services.bos.BosClient;
import com.baidubce.services.bos.BosClientConfiguration;
import com.baidubce.services.bos.model.PutObjectResponse;
import org.springframework.stereotype.Service;

import java.io.File;
import java.io.InputStream;

@Service
public class CloudProvider {
    String ACCESS_KEY_ID = "7435a3c21027474f95ec2543ccfb7967";
    String SECRET_ACCESS_KEY = "d5e2e299488e42e68910dfb8031c2647";
    String ENDPOINT ="http://listj.bj.bcebos.com";


    public String PutObject(String objectKey, InputStream fileStream){
    // 初始化一个BosClient
        BosClientConfiguration config = new BosClientConfiguration();
        config.setCredentials(new DefaultBceCredentials(ACCESS_KEY_ID, SECRET_ACCESS_KEY));
        config.setEndpoint(ENDPOINT);
        BosClient client = new BosClient(config);
        // 以数据流形式上传Object
        PutObjectResponse putObjectResponseFromInputStream  = client.putObject("listj", objectKey, fileStream);
        return putObjectResponseFromInputStream .getETag();
    }


}

ACCESS_KEY_IDSECRET_ACCESS_KEY 就是之前用户的Access Key ID和用户的Secret Access Key,复制粘贴进去即可。ENDPOINT是你指定的域名,如下可获取到:在这里插入图片描述

PutObjectResponse putObjectResponseFromInputStream  = client.putObject("listj", objectKey, fileStream);

代码中listj表示你的bucket的名称,objectKey是文件名,fileStream是文件的数据流,所以我们只要拿到这三个参数传进来就可以实现上传文件到服务器上了。

FileController.java

package com.listj.community.community.controller;

import com.listj.community.community.dto.FileDTO;
import com.listj.community.community.provider.CloudProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;

@Controller
public class FileController {
    @Autowired
    private CloudProvider cloudProvider;

    @RequestMapping("/file/upload")
    @ResponseBody
    public FileDTO upload(HttpServletRequest request) {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        MultipartFile file = multipartRequest.getFile("editormd-image-file");
        try {
            String fileName=cloudProvider.PutObject(file.getOriginalFilename(),file.getInputStream());
            FileDTO fileDTO = new FileDTO();
            fileDTO.setSuccess(1);
            System.out.println("https://listj.bj.bcebos.com/listj/"+file.getOriginalFilename());
            fileDTO.setUrl("https://listj.bj.bcebos.com/listj/"+file.getOriginalFilename());
            return fileDTO;
        } catch (Exception e) {
            FileDTO fileDTO = new FileDTO();
            fileDTO.setSuccess(0);
            fileDTO.setMessage("上传失败");
            return fileDTO;
        }
    }
}

最后附上官方的一个开发者文档,不清楚的地方查阅一下就大功告成了官方文档

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!