@PostMapping({"/upload/file"})
@ResponseBody
public Result aliUpload(HttpServletRequest httpServletRequest, @RequestParam("file") MultipartFile file) throws URISyntaxException, FileNotFoundException {
String fileName = file.getOriginalFilename();
String suffixName = fileName.substring(fileName.lastIndexOf("."));
//生成文件名稱通用方法
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
Random r = new Random();
StringBuilder tempName = new StringBuilder();
tempName.append(sdf.format(new Date())).append(r.nextInt(100)).append(suffixName);
String newFileName = tempName.toString();
FileOssUtil.uploadFile(newFileName,file);
Result resultSuccess = ResultGenerator.genSuccessResult();
resultSuccess.setData("https://yuanmajiazu.oss-cn-hangzhou.aliyuncs.com/" + newFileName);
return resultSuccess;
}
package ltd.newbee.mall.controller.common;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.PutObjectRequest;
import org.springframework.web.multipart.MultipartFile;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class FileOssUtil {
// 阿里雲API的內或外網域名
private static String endpoint="https://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲API的密鑰Access Key ID
private static String accessKeyId="LTAI4Fm6MSmZc9FL2FdhNLP2";
// 阿里雲API的密鑰Access Key Secret
private static String accessKeySecret="YE0fugIih7dnPqAwjiXs9tERa12jhD";
// 阿里雲API的bucket名稱
private static String bucketName="yuanmajiazu";
// 賦值
// public static void settingIniOSS(String endpoint, String accessKeyId, String accessKeySecret,String bucketName) {
// FileBlobUtil.endpoint = endpoint;
// FileBlobUtil.accessKeyId = accessKeyId;
// FileBlobUtil.accessKeySecret = accessKeySecret;
// FileBlobUtil.bucketName = bucketName;
// }
public static void uploadFile(String objectKey, MultipartFile multipartFile)
throws OSSException, ClientException, FileNotFoundException {
// 創建OSSClient的實例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
if(multipartFile.getSize() != 0 && !"".equals(multipartFile.getName())){
// getInputStream()返回一個InputStream以從中讀取文件的內容。通過此方法就可以獲取到流
InputStream multipartFileInputStream = multipartFile.getInputStream();
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectKey, multipartFileInputStream);
ossClient.putObject(putObjectRequest);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
// 關閉流
ossClient.shutdown();
}
}
}
<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.10.2</version> </dependency>