上传图片返回路径
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");
// UUID
String 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 {
@Autowired
private 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);
}
}