图片上传到阿里云,其实跟文件上传到阿里云的做法是一样的,去掉了给文件格式命名等细节处理的操作,就更加简洁了一点。
/**
* 上传图片
* @param file
* @return
*/
@RequestMapping(value = "uploadFile", method = RequestMethod.POST)
@ResponseBody
public WebResponse uploadFile(@RequestParam("file") MultipartFile file ) {
if (file != null) {
String fileType = "";
if (file.getOriginalFilename().indexOf(".") < 1) {
return WebResponse.resFail("文件错误",null);
} else {
fileType = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."), file.getOriginalFilename().length());
}
String uuid = UUID.randomUUID().toString().replace("-", "") + fileType;
Oss oss = new Oss();
oss.setKey(uuid);
try {
oss.setValue(file.getBytes());
} catch (IOException e) {
logger.error("上传出错");
}
List<Oss> list = new ArrayList<>();
list.add(oss);
ossService.uploadOssForSteam(list);
logger.info("上传的路径", OssConfig.ENTFILE_PDFACCESS);
return WebResponse.resSuccess("上传成功",OssConfig.ENTFILE_PDFACCESS+uuid);
}else {
return WebResponse.resException("请上传文件",null);
}
}
OSS的代码可以在网上找到,关于一些参数的含义都有详细介绍的。
/**
* 上传oss
*
* @return
*/
@Override
public Map uploadOssForSteam(List<Oss> ossList) {
String endpoint = OssConfig.ENTFILE_ENDPOINT;
String accessKeyId = OssConfig.ENTFILE_ACCESSKEYID;
String accessKeySecret = OssConfig.ENTFILE_ACCESSKEYSECRET;
String bucketName = OssConfig.ENTFILE_BUCKETNAME;
Map view = new HashMap();
view.put("msg", "上传成功");
view.put("code", "00");
// 日志配置,OSS Java SDK使用log4j记录错误信息。示例程序会在工程目录下生成“oss-demo.log”日志文件,默认日志级别是INFO。
// 日志的配置文件是“conf/log4j.properties”,如果您不需要日志,可以没有日志配置文件和下面的日志配置。
/*PropertyConfigurator.configure("conf/log4j.properties");*/
logger.info("Started");
//OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(accessKey, screctKey);
ClientConfiguration conf = new ClientConfiguration();
conf.setConnectionTimeout(15 * 1000); // 连接超时,默认15秒
conf.setSocketTimeout(15 * 1000); // socket超时,默认15秒
conf.setMaxErrorRetry(2); // 失败后最大重试次数,默认2次
// 生成OSSClient,您可以指定一些参数,详见“SDK手册 > Java-SDK > 初始化”,
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start
oss = new OSSClient(endpoint, accessKeyId, accessKeySecret);
try {
// 判断Bucket是否存在。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
if (oss.doesBucketExist(bucketName)) {
logger.info("您已经创建Bucket:" + bucketName + "。");
} else {
logger.info("您的Bucket不存在,创建Bucket:" + bucketName + "。");
view.put("msg", "您的Bucket不存在,创建Bucket:" + bucketName + "。");
view.put("code", "01");
return view;
// 创建Bucket。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
//ossClient.createBucket(bucketName);
}
// 文件存储入OSS,Object的名称为fileKey。详细请参看“SDK手册 > Java-SDK > 上传文件”。
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/upload_object.html?spm=5176.docoss/user_guide/upload_object
//String fileKey = "README.md";
//ossClient.putObject(bucketName, fileKey, new File("README.md"));
for (Oss ossE : ossList) {
PutObjectResult result = oss.putObject(bucketName, ossE.getKey(), new ByteArrayInputStream(ossE.getValue()));
String eTag = result.getETag();
logger.info("Object:" + ossE.getKey() + "存入OSS成功。");
oss.setObjectAcl(bucketName, ossE.getKey(), CannedAccessControlList.PublicRead);
}
} catch (OSSException oe) {
view.put("msg", "上传失败");
view.put("code", "01");
oe.printStackTrace();
} catch (ClientException ce) {
view.put("msg", "上传失败");
view.put("code", "01");
ce.printStackTrace();
} catch (Exception e) {
view.put("msg", "上传失败");
view.put("code", "01");
e.printStackTrace();
} finally {
oss.shutdown();
}
logger.info("Completed");
return view;
}