我在项目中需要上传图片到云服务器,后经过实践,已经大功告成,这里对每一步的操作都记录一下。
首先我们先找一个云服务器,我用的是百度智能云点击链接可以进入页面:
我们首先创建对象存储
新建一个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_ID
和SECRET_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;
}
}
}
最后附上官方的一个开发者文档,不清楚的地方查阅一下就大功告成了官方文档
来源:CSDN
作者:ListJ
链接:https://blog.csdn.net/qq_39595349/article/details/104042550