pom:
<!--oss-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
util:
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.ObjectMetadata;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
/**
* 对OSS服务器进行上传删除等的处理
*
* @ClassName: OSSManageUtil
* @Description:
* @author liux
* @date 2017-5-3 上午10:47:00
*
*/
public class OSSManageUtil {
private static String accessUrl ="";
private static String endpoint = "";
private static String accessKeyId = "";
private static String accessKeySecret = "";
private static String bucketName = "";
private static String remoteFilePath = "app/other/"; // oss服务器二级目录
/**
* 上传OSS服务器文件
* @Title: uploadFile
* @param fileContent spring
* @throws Exception
* @return String
*/
public static String uploadFile(MultipartFile appFile) throws IOException {
// 文件转成流
InputStream fileContent = appFile.getInputStream();
// 文件名称
String fileName = appFile.getOriginalFilename();
// 初始化OSSClient
OSSClient ossClient = new OSSClient(endpoint, accessKeyId,accessKeySecret);
// 创建上传Object的Metadata
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentLength(fileContent.available());
objectMetadata.setContentEncoding("utf-8");
objectMetadata.setCacheControl("no-cache");
objectMetadata.setHeader("Pragma", "no-cache");
objectMetadata.setContentType(contentType(fileName.substring(fileName.lastIndexOf("."))));
objectMetadata.setContentDisposition("inline;filename=" + fileName);
// 上传文件
ossClient.putObject(bucketName, remoteFilePath + fileName, fileContent, objectMetadata);
// 关闭OSSClient
ossClient.shutdown();
// 关闭io流
fileContent.close();
return accessUrl + remoteFilePath + fileName;
}
// 下载文件
// 下载文件 第二个参数key指的是上传时的文件名
@SuppressWarnings("unused")
public static void downloadFile(String key, String filename)
throws OSSException, ClientException, IOException {
// 初始化OSSClient
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
OSSObject object = ossClient.getObject(bucketName, key);
// 获取ObjectMeta
ObjectMetadata meta = object.getObjectMetadata();
// 获取Object的输入流
InputStream objectContent = object.getObjectContent();
ObjectMetadata objectData = ossClient.getObject(new GetObjectRequest(bucketName, key),
new File(filename));
// 关闭数据流
objectContent.close();
}
/**
* 根据key删除OSS服务器上的文件
* @Title: deleteFile
* @param filePath 设定文件
* @throws IOException
*/
public static void deleteFile( String filePath) throws IOException {
// 初始化OSSClient
OSSClient ossClient = new OSSClient(endpoint, accessKeyId,accessKeySecret);
filePath=filePath.substring(45);
ossClient.deleteObject(bucketName, filePath);
}
/**
* Description: 判断OSS服务文件上传时文件的contentType @Version1.0
* @param FilenameExtension 文件后缀
* @return String
*/
public static String contentType(String FilenameExtension) {
if (FilenameExtension.equals(".BMP") || FilenameExtension.equals(".bmp")) {
return "image/bmp";
}
if (FilenameExtension.equals(".GIF") || FilenameExtension.equals(".gif")) {
return "image/gif";
}
if (FilenameExtension.equals(".JPEG") || FilenameExtension.equals(".jpeg") || FilenameExtension.equals(".JPG")
|| FilenameExtension.equals(".jpg") || FilenameExtension.equals(".PNG")
|| FilenameExtension.equals(".png")) {
return "image/jpeg";
}
if (FilenameExtension.equals(".HTML") || FilenameExtension.equals(".html")) {
return "text/html";
}
if (FilenameExtension.equals(".TXT") || FilenameExtension.equals(".txt")) {
return "text/plain";
}
if (FilenameExtension.equals(".VSD") || FilenameExtension.equals(".vsd")) {
return "application/vnd.visio";
}
if (FilenameExtension.equals(".PPTX") || FilenameExtension.equals(".pptx") || FilenameExtension.equals(".PPT")
|| FilenameExtension.equals(".ppt")) {
return "application/vnd.ms-powerpoint";
}
if (FilenameExtension.equals(".DOCX") || FilenameExtension.equals(".docx") || FilenameExtension.equals(".DOC")
|| FilenameExtension.equals(".doc")) {
return "application/msword";
}
if (FilenameExtension.equals(".XML") || FilenameExtension.equals(".xml")) {
return "text/xml";
}
if (FilenameExtension.equals(".apk") || FilenameExtension.equals(".APK")) {
return "application/octet-stream";
}
return "text/html";
}
}
controller:
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@RestController
@RequestMapping("/oss")
public class OssController {
/**
* app文件上传
* @return
*/
@RequestMapping(value = "/uploadApp", method = RequestMethod.POST)
@ResponseBody
public String uploadApp(@RequestParam MultipartFile appFile) {
String apkUrl = null;
try {
apkUrl = OSSManageUtil.uploadFile(appFile);
} catch (Exception e) {
System.out.println(e.getMessage());
return "上传失败!";
}
return "上传成功!:地址" + apkUrl;
}
}
postMan调用: