import com.aliyun.oss.OSSClient;
import com.meosun.data.Result;
import com.meosun.util.aliyun.OSSClientUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.Date;
/**
* 上传图片并上传到oss的工具类
*
* @author MrXiao
*/
public class FileUtil {
private static Logger logger = LoggerFactory.getLogger(FileUtil.class);
public static String uploadImage(HttpServletRequest request,MultipartFile file){
if(file != null){
// 获取文件名
String originalFilename = file.getOriginalFilename();
// 判断上传图片类型是否合法
String fileType = OSSClientUtil.getContentType(originalFilename);
if (StringUtil.isBlank(fileType)) {
// 不合法
return "图片类型不合法";
}
// 获取文件的类型
String contentType = originalFilename.indexOf(".") != -1 ? originalFilename.substring(originalFilename.lastIndexOf(".") + 1, originalFilename.length()) : null;
// 获取当前项目的路径
String realPath = request.getSession().getServletContext().getRealPath(Constant.ALIYUN_OSS_FOLDER);
// 获取六位随机数
int random6 = NumberUtil.random6();
// 生成新的文件名 (取当前时间戳和六位随机数拼接成文件名)
String newFileName = new Date().getTime() + random6 + "." + contentType;
// 拼接完整的路径
String path = realPath + newFileName;
// 判断文件夹是否存在,若不存则创建
File mkfile = new File(realPath);
if(!mkfile.exists() && !mkfile.isDirectory()){
mkfile.mkdir();
logger.info("已创建临时存储图片文件夹");
}
// 将图片保存到服务器
File newFile = new File(path);
try {
file.transferTo(newFile);
} catch (IOException e) {
e.printStackTrace();
}
// 初始化阿里云oss链接,上传图片到服务器
OSSClient ossClient = OSSClientUtil.getOSSClient();
OSSClientUtil.uploadObject2OSS(ossClient, newFile, Constant.ALIYUN_OSS_BUCKETNAME, Constant.ALIYUN_OSS_FOLDER);
// 设置url有效期(十年)
Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
// 获取图片访问的URL
URL url = ossClient.generatePresignedUrl(Constant.ALIYUN_OSS_BUCKETNAME, Constant.ALIYUN_OSS_FOLDER + newFileName, expiration);
// 删除本地保存的图片
if(StringUtil.isNotBlank(url.toString()) && newFile.exists()){
boolean bool = newFile.delete();
System.out.println(bool);
if(bool)
logger.info("已上传图片至OSS,本地完成删除");
else
logger.info("已上传图片至OSS,本地删除失败");
}
return url.toString();
}
return "";
}
}
Java文件上传并上传至阿里云工具类
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 从我正式成为一个产品经理开始,已经有 2 个多月的时间了。这两个月过得十分充实,如果不回想一下,我还以为自己已经在...