阿里雲oss上傳———通過MultipartFile,springmvc模式
阿新 • • 發佈:2021-06-29
@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>