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;
}
}
本文介绍如何使用UCloud的UFile SDK for Java进行文件上传操作,包括设置环境、依赖引入、配置存储空间及令牌,以及通过示例代码展示如何实现文件上传。
1038

被折叠的 条评论
为什么被折叠?



