上传图片返回路径

    1. public class UploadUtil {
    2. /***
    3. * 上传图片到阿里云,返回路径
    4. * @param inputStream 文件输入流
    5. * @return
    6. */
    7. public static String uploadPNGImage(InputStream inputStream) {
    8. //工具类获取值
    9. String endpoint = "oss-cn-beijing.aliyuncs.com";
    10. String accessKeyId = "XXX";
    11. String accessKeySecret = "XXX";
    12. String bucketName = "XXX";
    13. String aliasUrl = "https://XXX.com/";
    14. //创建OSS实例
    15. OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    16. // 根据日期分隔
    17. String folder = new DateTime().toString("yyMMdd");
    18. // UUID
    19. String fileName = UUID.randomUUID().toString().replaceAll("-", "");
    20. // oss中的文件夹名
    21. String objectName = "img/" + folder + "/" + fileName + ".png";
    22. // 创建上传文件的元信息,可以通过文件元信息设置HTTP header(设置了才能通过返回的链接直接访问)。
    23. //如果不设置,直接访问url会自行下载图片,看各位自己选择
    24. ObjectMetadata objectMetadata = new ObjectMetadata();
    25. objectMetadata.setContentType("image/png");
    26. ossClient.putObject(bucketName, objectName, inputStream,objectMetadata);
    27. // 关闭OSSClient。
    28. ossClient.shutdown();
    29. return aliasUrl + objectName;
    30. }
    31. }

    controller 示例
    单图、多图、流文件(Content-Type: application/octet-stream)

    1. @Slf4j
    2. @Controller
    3. @RestController
    4. @RequestMapping("/img")
    5. public class CityController {
    6. @Autowired
    7. private CityService cityService;
    8. @PostMapping("/update")
    9. public JSONResult uploadImage(@RequestParam("image") MultipartFile file) {
    10. InputStream inputStream;
    11. try {
    12. inputStream = file.getInputStream();
    13. } catch (IOException e) {
    14. log.error("updateCityImage", e);
    15. return JSONResult.errorMsg("Upload Err: " + e.toString());
    16. }
    17. String url = UploadUtil.uploadPNGImage(inputStream);
    18. return JSONResult.ok(url);
    19. }
    20. @PostMapping("/upload")
    21. public JSONResult uploadImages(@RequestParam("images") MultipartFile[] files) {
    22. for (MultipartFile file: files) {
    23. if (file.getSize() / 100 > 1000) {
    24. return JSONResult.errorMsg("图片不能超过1M");
    25. }
    26. }
    27. List<String> urls = new ArrayList<>(files.length);
    28. for (MultipartFile file : files) {
    29. InputStream inputStream;
    30. try {
    31. inputStream = file.getInputStream();
    32. } catch (IOException e) {
    33. log.error("updateCityImage", e);
    34. return JSONResult.errorMsg("Upload Err: " + e.toString());
    35. }
    36. String url = UploadUtil.uploadPNGImage(inputStream);
    37. urls.add(url);
    38. }
    39. return JSONResult.ok(urls);
    40. }
    41. @PostMapping("/binary_update")
    42. public JSONResult binaryUpdate(HttpServletRequest request) {
    43. InputStream inputStream;
    44. try {
    45. inputStream = request.getInputStream();
    46. } catch (IOException e) {
    47. log.error("binaryUpdate", e);
    48. return JSONResult.errorMsg("Upload Err: " + e.toString());
    49. }
    50. String url = UploadUtil.uploadPNGImage(inputStream);
    51. return JSONResult.ok(url);
    52. }
    53. }