controller层
@RestController
@RequestMapping("/upload")
public class FileUploadController {@PostMappingpublic Result upload(MultipartFile file) throws IOException {String orgFilename = file.getOriginalFilename();//名字组合String filename = UUID.randomUUID().toString().substring(1,6)+orgFilename.substring(orgFilename.lastIndexOf("."));String url = AliOssUtil.uploadFile(filename,file.getInputStream());return Result.success(url);}
}
目的是将上传的图片存储到阿里云的OSS存储器中,然后返回一个url地址给前端页面。
这里工具类AliOssUtil,是阿里云oss云存储器提供案例。
public class AliOssUtil {private static final String ENDPOINT = "https://oss-cn-beijing.aliyuncs.com";private static final String ACCESS_KEY_ID = "你的oss键值id";private static final String SECRET_ACCESS_KEY = "密码值";private static final String BUCKET_NAME = "bucket名字";//上传文件,返回文件的公网访问地址public static String uploadFile(String objectName, InputStream inputStream){// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(ENDPOINT,ACCESS_KEY_ID,SECRET_ACCESS_KEY);//公文访问地址String url = "";try {// 创建存储空间。ossClient.createBucket(BUCKET_NAME);ossClient.putObject(BUCKET_NAME, objectName, inputStream);url = "https://"+BUCKET_NAME+"."+ENDPOINT.substring(ENDPOINT.lastIndexOf("/")+1)+"/"+objectName;} catch (OSSException oe) {System.out.println("Caught an OSSException, which means your request made it to OSS, "+ "but was rejected with an error response for some reason.");System.out.println("Error Message:" + oe.getErrorMessage());System.out.println("Error Code:" + oe.getErrorCode());System.out.println("Request ID:" + oe.getRequestId());System.out.println("Host ID:" + oe.getHostId());} catch (ClientException ce) {System.out.println("Caught an ClientException, which means the client encountered "+ "a serious internal problem while trying to communicate with OSS, "+ "such as not being able to access the network.");System.out.println("Error Message:" + ce.getMessage());} finally {if (ossClient != null) {ossClient.shutdown();}}return url;}
}