上传图片返回路径
public class UploadUtil {/**** 上传图片到阿里云,返回路径* @param inputStream 文件输入流* @return*/public static String uploadPNGImage(InputStream inputStream) {//工具类获取值String endpoint = "oss-cn-beijing.aliyuncs.com";String accessKeyId = "XXX";String accessKeySecret = "XXX";String bucketName = "XXX";String aliasUrl = "https://XXX.com/";//创建OSS实例OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);// 根据日期分隔String folder = new DateTime().toString("yyMMdd");// UUIDString fileName = UUID.randomUUID().toString().replaceAll("-", "");// oss中的文件夹名String objectName = "img/" + folder + "/" + fileName + ".png";// 创建上传文件的元信息,可以通过文件元信息设置HTTP header(设置了才能通过返回的链接直接访问)。//如果不设置,直接访问url会自行下载图片,看各位自己选择ObjectMetadata objectMetadata = new ObjectMetadata();objectMetadata.setContentType("image/png");ossClient.putObject(bucketName, objectName, inputStream,objectMetadata);// 关闭OSSClient。ossClient.shutdown();return aliasUrl + objectName;}}
controller 示例
单图、多图、流文件(Content-Type: application/octet-stream)
@Slf4j@Controller@RestController@RequestMapping("/img")public class CityController {@Autowiredprivate CityService cityService;@PostMapping("/update")public JSONResult uploadImage(@RequestParam("image") MultipartFile file) {InputStream inputStream;try {inputStream = file.getInputStream();} catch (IOException e) {log.error("updateCityImage", e);return JSONResult.errorMsg("Upload Err: " + e.toString());}String url = UploadUtil.uploadPNGImage(inputStream);return JSONResult.ok(url);}@PostMapping("/upload")public JSONResult uploadImages(@RequestParam("images") MultipartFile[] files) {for (MultipartFile file: files) {if (file.getSize() / 100 > 1000) {return JSONResult.errorMsg("图片不能超过1M");}}List<String> urls = new ArrayList<>(files.length);for (MultipartFile file : files) {InputStream inputStream;try {inputStream = file.getInputStream();} catch (IOException e) {log.error("updateCityImage", e);return JSONResult.errorMsg("Upload Err: " + e.toString());}String url = UploadUtil.uploadPNGImage(inputStream);urls.add(url);}return JSONResult.ok(urls);}@PostMapping("/binary_update")public JSONResult binaryUpdate(HttpServletRequest request) {InputStream inputStream;try {inputStream = request.getInputStream();} catch (IOException e) {log.error("binaryUpdate", e);return JSONResult.errorMsg("Upload Err: " + e.toString());}String url = UploadUtil.uploadPNGImage(inputStream);return JSONResult.ok(url);}}
