//上传apk
@ResponseBody
@RequestMapping("/uploadApk")
@RequiresPermissions(“sys:uploadApk:uploadApk”)
public R getToken(Integer type, MultipartFile file, HttpServletRequest request) throws IOException {
//上传文件到本服务器
InputStream inputStream = file.getInputStream();
//定义文件名
String fileName = "";
//获取原始文件名
String originalFilename = file.getOriginalFilename();
//获取扩展名
String extendName = originalFilename.substring(originalFilename.lastIndexOf("."));
String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase();
fileName = uuid + "_" + originalFilename;
//上传的文件目录
//String realPath = request.getSession().getServletContext().getRealPath("/uploads");
/*
type=100安卓
type=101 iphone手机
type=102安卓pad
type=103苹果pad
*/
//本地服务器存储路径
String realPath = fileUploadServiceImpl.getDdir(type);
//String dataPath = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
File f = new File(realPath);
if (!f.exists()) {
f.mkdirs();
}
file.transferTo(new File(f,fileName));
//文件在服务器地址
String filePath = realPath + "/" + fileName;
System.out.println(filePath);
JSONObject object = getOssTokenImpl.getToken(extendName);
/**
* {
* "success": true,
* "object": {
* "securityToken": "CAIS+QF1q6Ft5B2yfSjIr47yD+Llu6VmxZa7UGHwnk4nSd9DibDzuzz2IH9EdXhqCeEatfw3n25X6/kdlrh0UIRyXVbJY8pg2ckIqFP6MtJlP3kpXvlW5qe+EE2/VjTZvqaLEcibIfrZfvCyESOm8gZ43br9cxi7QlWhKufnoJV7b9MRLGLaBHg8c7UwHAZ5r9IAPnb8LOukNgWQ4lDdF011oAFx+wgdgOadupTMt0GC0Q2glLRM/tWhe8aeApMybMslYbCcx/drc6fN6ilU5iVR+b1+5K4+omiX74DHUwgNuE3eaLSLr4IwNm5+fbMxH69JquTsNTqUWVoNWu8agAExq4joER4LFjxVj29mS/M97WgBgPsP+1salEjcl+Wg785PgRAemS5lpWr3fKV70cKkrCA875PHZy6H0ZOSd//w+IR/MaweP6sXajWnQKdymifYzYYswc2hJGEoGQKTs81HPTbRqpudFg+vCFQOiYCvSxDwta27IQyugm2DAOfaxA==",
* "ossEndpoint": "https://oss-cn-beijing.aliyuncs.com",
* "internal": false,
* "ossAccessSecret": "GfqPSyrLnqunqbE23P7gQUUiDh66HPSv1nCUFLZH4TJz",
* "ossBucket": "melotedu",
* "savePath": "course/materials/eaaabb51a726441dab5f58321e82ca6d.ppt",
* "expiration": "2019-10-12T06:11:00Z",
* "ossDomain": "https://melotedu.oss-cn-beijing.aliyuncs.com",
* "ossAccessKey": "STS.NMGDXQVzGrTPRGAzNrEPofuXY",
* "ossRoleArn": "acs:ram::1853458263119816:role/ossclient",
* "ossRegion": "cn-beijing"
* }
* }
*/
if(object.getBoolean("success")==true){
//获取各个参数
String ossBucket = object.getJSONObject("object").getString("ossBucket");
String ossEndpoint = object.getJSONObject("object").getString("ossEndpoint");
String ossAccessKey = object.getJSONObject("object").getString("ossAccessKey");
String ossAccessSecret = object.getJSONObject("object").getString("ossAccessSecret");
String securityToken = object.getJSONObject("object").getString("securityToken");
String objectName = object.getJSONObject("object").getString("savePath");
String domain = object.getJSONObject("object").getString("ossDomain");
System.out.println(object);
//上传到阿里服务器
FileDO byCondition = fileUploadServiceImpl.findByCondition(type);
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = ossEndpoint;
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = ossAccessKey;
String accessKeySecret = ossAccessSecret;
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret, securityToken);
//判断阿里服务器是否有数据了,有删除
if(byCondition!=null){
boolean found = ossClient.doesObjectExist(ossBucket, byCondition.getUrl().substring(byCondition.getUrl().lastIndexOf(domain)+domain.length()+1));
if(found == true){
// 删除文件。
ossClient.deleteObject(ossBucket, byCondition.getUrl().substring(byCondition.getUrl().lastIndexOf(domain)+domain.length()+1));
}
}
// 上传文件。<yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
ossClient.putObject(ossBucket, objectName, new File(filePath));
// 关闭OSSClient。
ossClient.shutdown();
String lastUrl = domain + "/" + objectName;
//删除本地的上传的文件
if(f.exists()){
if(f.isFile()){
boolean delete = f.delete();
}else{
File[] files = f.listFiles();
for(File filee:files){
if(filee.exists() && filee.isFile()){
boolean delete = filee.delete();
}
}
}
}
//存储数据库
FileDO fileDO = new FileDO();
fileDO.setType(type);
fileDO.setCreateDate(new Date());
fileDO.setUrl(lastUrl);
if(byCondition!=null){
fileDO.setId(byCondition.getId());
}
fileUploadServiceImpl.save(fileDO);
return R.ok().put("fileName", lastUrl);
}else{
//没有获得token
return R.error("上传失败");
}
}