String content = "<img > .............";
String regEx_img = "<img\\s[^>]+>";
Pattern p_image = Pattern.compile(regEx_img, Pattern.CASE_INSENSITIVE);
Matcher m_image = p_image.matcher(content);
String img = "";
String contentPath = getRequest().getSession().getServletContext().getRealPath("/");
String dirPath = contentPath + "upload\\image";
while (m_image.find()) {
// 得到<img />数据
img = m_image.group();
// 匹配<img>中的src数据
Matcher m = Pattern.compile("src\\s*=\\s*\"?(.*?)(\"|>|\\s+)").matcher(img);
while (m.find()) {
String urls = m.group(1);
if(urls.contains("http://alicdn.gs233.com")){
continue;
}
String path = CommonUtils.connectURL(urls,dirPath);
if(path != null && path.length() > 0){
File file = new File(path);
String suffix = file.getName().substring(file.getName().indexOf("."));
String fileName = UuidUtil.getUuidByJdk(true) + suffix;
String key = "yyzq/cms/images/" + fileName;
OssUtil ossKit = new OssUtil();
ossKit.upload(key, file);
file.delete();
String arpath = OssUtil.ossDomain + "/" + key;
content = content.replace(urls, arpath);
}else{
content = content.replace(img.toString(), "");
}
}
}
public class OssUtil {
private static Logger logger = LoggerFactory.getLogger(OssUtil.class);
private static String fileName = "aliyun.properties";
private static String endpoint = PropKit.use(fileName).get("gs233.endpoint");
private static String accessKeyId = PropKit.use(fileName).get("gs233.accessKeyId");
private static String accessKeySecret = PropKit.use(fileName).get("gs233.accessKeySecret");
private static String bucketName = PropKit.use(fileName).get("gs233.bucketName");
private static String key = "**/**/***/";
public static String ossDomain = "http://alicdn.*******.com";
public String upload(String fileName, File file) {
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
ossClient.putObject(new PutObjectRequest(bucketName, fileName, file));
ossClient.shutdown();
return ossDomain+"/"+fileName;
}
public String upload(String fileName, String file) {
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
ossClient.putObject(new PutObjectRequest(bucketName, key+fileName, new File(file)));
ossClient.shutdown();
return ossDomain+"/"+key+fileName;
}
public void uploadDir(String base, String dir) {
logger.info("upload,dir:{}", base + "/" + dir);
File[] files = new File(base + "/" + dir).listFiles();
logger.info("upload,files:{}", files.length);
if (files.length <= 0) {
return;
}
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
for (File file : files) {
logger.debug("file:{}", file.getName());
ossClient.putObject(new PutObjectRequest(bucketName, dir + "/" + file.getName(), file));
}
logger.info("upload done,files:{}", files.length);
ossClient.shutdown();
}
}
第一个仅为代码块,本在方法中,第一块为上传工具类