1.sdk参考https://docs.ucloud.cn/storage_cdn/ufile/tools/sdk
java sdk https://github.com/ucloud/ufile-sdk-java
2.引入
<dependency> <groupId>cn.ucloud.ufile</groupId> <artifactId>ufile-client-java</artifactId> <version>2.4.1</version> </dependency>
3.创建存储空间 https://console.ucloud.cn/ufile/ufile
4.创建令牌https://console.ucloud.cn/ufile/token
5.将公钥与私钥添加到配置文件
ucloud.ufile.public-key= ucloud.ufile.private-key=
6.创建一个类
// 对象操作需要ObjectConfig来配置您的地区和域名后缀 ObjectConfig config = new ObjectConfig("your bucket region", "ufileos.com");
可换为lambda表达式
package life.majiang.community.provider; import cn.ucloud.ufile.UfileClient; import cn.ucloud.ufile.api.object.ObjectConfig; import cn.ucloud.ufile.auth.ObjectAuthorization; import cn.ucloud.ufile.auth.UfileObjectLocalAuthorization; import cn.ucloud.ufile.bean.PutObjectResultBean; import cn.ucloud.ufile.exception.UfileClientException; import cn.ucloud.ufile.exception.UfileServerException; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.File; import java.io.InputStream; import java.util.UUID; @Service public class UCloudProvider { @Value("${ucloud.ufile.public-key}") private String publicKey; @Value("${ucloud.ufile.private-key}") private String privateKey; //同步上传 public String upload(InputStream fileStream,String mimeType,String fileName){ String generatedFileName; String[] filePaths = fileName.split("\\."); if (filePaths .length>1) { generatedFileName = UUID.randomUUID().toString()+"."+filePaths[filePaths.length-1]; }else { return null; } try { // 对象相关API的授权器 ObjectAuthorization objectAuthorization = new UfileObjectLocalAuthorization(publicKey, privateKey); // 对象操作需要ObjectConfig来配置您的地区和域名后缀 ObjectConfig config = new ObjectConfig("cn-bj", "ufileos.com"); PutObjectResultBean response = UfileClient.object(objectAuthorization, config) .putObject(fileStream, mimeType) .nameAs(generatedFileName) .toBucket("wangrui") /** * 是否上传校验MD5, Default = true */ // .withVerifyMd5(false) /** * 指定progress callback的间隔, Default = 每秒回调 */ // .withProgressConfig(ProgressConfig.callbackWithPercent(10)) /** * 配置进度监听 */ .setOnProgressListener((bytesWritten, contentLength) -> { }) .execute(); } catch (UfileClientException e) { e.printStackTrace(); return null; } catch (UfileServerException e) { e.printStackTrace(); return null; } return generatedFileName; } }
package life.majiang.community.controller; import life.majiang.community.dto.FileDTO; import life.majiang.community.provider.UCloudProvider; 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; import java.io.IOException; @Controller public class FileController { @Autowired private UCloudProvider uCloudProvider; @RequestMapping("/file/upload") @ResponseBody public FileDTO upload(HttpServletRequest request){ MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request; MultipartFile file = multipartRequest.getFile("editormd-image-file"); try { uCloudProvider.upload(file.getInputStream(),file.getContentType(),file.getOriginalFilename()); } catch (IOException e) { e.printStackTrace(); } FileDTO fileDTO = new FileDTO(); fileDTO.setSuccess(1); fileDTO.setUrl("/images/bk.png"); return fileDTO; } }