Bläddra i källkod

将oss配置项抽取,添加上传目录配置项

郭超 4 år sedan
förälder
incheckning
e83227f36b

+ 46 - 0
src/main/java/com/mooctest/config/OSSConfiguration.java

@@ -0,0 +1,46 @@
+package com.mooctest.config;
+
+
+import com.aliyun.oss.ClientBuilderConfiguration;
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.OSSClient;
+import com.aliyun.oss.OSSClientBuilder;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Data
+@Configuration
+public class OSSConfiguration {
+
+    @Value("${oss.accessKeyId}")
+    private String accessKeyId;
+
+    @Value(("${oss.accessKeySecret}"))
+    private String accessKeySecret;
+
+    @Value("${oss.endPoint}")
+    private String endPoint;
+
+    @Value("${oss.bucketName}")
+    private String bucketName;
+
+    @Value("${oss.folder}")
+    private String folder;
+
+    public String getBaseUrl() {
+        return "http://" + bucketName + "." + endPoint + "/";
+    }
+
+    public OSS ossClient(){
+        return new OSSClientBuilder().build(endPoint, accessKeyId, accessKeySecret);
+    }
+
+    public OSSClient getOssClient(){
+        return new OSSClient(endPoint,accessKeyId, accessKeySecret);
+    }
+
+    public OSS ossClientConf(ClientBuilderConfiguration conf){
+        return new OSSClientBuilder().build(endPoint, accessKeyId, accessKeySecret, conf);
+    }
+}

+ 10 - 0
src/main/java/com/mooctest/data/enums/UploadType.java

@@ -0,0 +1,10 @@
+package com.mooctest.data.enums;
+
+/**
+ * @说明: 上传文件的类型表示,与OSS中的文件夹相对应
+ */
+public class UploadType {
+    public static final String THREEPAGEFILE = "threePage/";
+    public static final String JSONFILE = "json/";
+    public static final String IMAGE = "image/";
+}

+ 2 - 4
src/main/java/com/mooctest/service/FileService.java

@@ -3,8 +3,6 @@ package com.mooctest.service;
 import org.springframework.web.multipart.MultipartFile;
 
 public interface FileService {
-
-    //上传一个file 返回一个String
-    public String uploadFile(MultipartFile file);
-    public String uploadJson(String content,long taskId);
+    String uploadFile(MultipartFile file);
+    String uploadJson(String content,long taskId);
 }

+ 1 - 1
src/main/java/com/mooctest/service/TaskService.java

@@ -310,7 +310,7 @@ public class TaskService {
         restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
         ResponseEntity<String> responseEntity = restTemplate.postForEntity
                 ("http://" + reportHost  + "/Bug/api/extra/uploadExamUrl", params, String.class);
-//        System.out.println(responseEntity.getStatusCode());
+        System.out.println("http://" + reportHost  + "/Bug/api/extra/uploadExamUrl   " + responseEntity.getStatusCode());
         if (responseEntity.getStatusCode().equals(HttpStatus.OK)){
             fileService.uploadJson(responseEntity.getBody(),caseId);
             return caseId;

+ 8 - 8
src/main/java/com/mooctest/service/impl/NginxFileService.java

@@ -1,7 +1,6 @@
 package com.mooctest.service.impl;
 
 import com.mooctest.service.FileService;
-import org.apache.commons.io.IOUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
 import org.springframework.stereotype.Service;
@@ -18,6 +17,11 @@ public class NginxFileService implements FileService {
     @Value("${baseUrl.urlPath}")
     private String urlPath;
 
+    /**
+     * 上传三级菜单
+     * @param file
+     * @return
+     */
     @Override
     public String uploadFile(MultipartFile file) {
         String fileName = System.currentTimeMillis()+ file.getOriginalFilename();
@@ -36,14 +40,9 @@ public class NginxFileService implements FileService {
         }
     }
 
-    public static void main(String[] args) {
-        NginxFileService n=new NginxFileService();
-        System.out.println(n.uploadJson("adfasfasdf",324));
-    }
-
     @Override
     public String uploadJson(String content,long taskId) {
-        String fileName =  taskId+".json";
+        String fileName = taskId+".json";
         File saveFile = new File(filePath + fileName);
         //判断文件父目录是否存在
 //        System.out.println(saveFile.getParentFile());
@@ -55,7 +54,8 @@ public class NginxFileService implements FileService {
             write.write(content);
             write.flush();
             write.close();
-            return urlPath+fileName;
+            System.out.println("上传三级菜单的json " + filePath + fileName);
+            return filePath + fileName;
         } catch (IOException e) {
             e.printStackTrace();
             return null;

+ 276 - 31
src/main/java/com/mooctest/service/impl/OssFileService.java

@@ -1,7 +1,15 @@
 package com.mooctest.service.impl;
 
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.OSSClient;
+import com.aliyun.oss.model.*;
+import com.mooctest.config.OSSConfiguration;
+import com.mooctest.data.enums.UploadType;
 import com.mooctest.service.FileService;
 import com.mooctest.util.OSSClientUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
@@ -11,37 +19,274 @@ import java.io.*;
 @Service
 @ConditionalOnExpression("${useOss}==true")
 public class OssFileService implements FileService {
-    @Override
-    public String uploadFile(MultipartFile file) {
-        return OSSClientUtil.uploadSingleFile(file);
-    }
-
-    public static void main(String[] args) {
-        OssFileService o = new OssFileService();
-        System.out.println(o.uploadJson("234",234));
-    }
-
-    @Override
-    public String uploadJson(String content, long taskId) {
-        String filePath = System.getProperty("user.dir")+"/";
-        String fileName =  taskId+".json";
-        File saveFile = new File(filePath + fileName);
-        try {
-            Writer write = new OutputStreamWriter(new FileOutputStream(saveFile), "UTF-8");
-            write.write(content);
-            write.flush();
-            write.close();
-            String fileOssUrl = OSSClientUtil.uploadSingleFile(saveFile);
-            if(fileOssUrl != null && !fileOssUrl.equals("")){
-                saveFile.delete();
-            }
-
-            return fileOssUrl;
-        } catch (IOException e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
 
+	@Autowired
+	private OSSConfiguration ossConfig;
+
+    private Logger logger = LoggerFactory.getLogger(OSSClientUtil.class);
+
+	@Override
+	public String uploadFile(MultipartFile file) {
+		return this.uploadSingleFile(file, UploadType.THREEPAGEFILE);
+	}
+
+	@Override
+	public String uploadJson(String content, long taskId) {
+		String filePath = System.getProperty("user.dir") + "/";
+		String fileName = taskId + ".json";
+		File saveFile = new File(filePath + fileName);
+		try {
+			Writer write = new OutputStreamWriter(new FileOutputStream(saveFile), "UTF-8");
+			write.write(content);
+			write.flush();
+			write.close();
+			String fileOssUrl = this.uploadSingleFile(saveFile, UploadType.JSONFILE);
+			System.out.println("上传三级菜单的json " + fileOssUrl);
+			if (fileOssUrl != null && !fileOssUrl.equals("")) {
+				saveFile.delete();
+			}
+
+			return fileOssUrl;
+		} catch (IOException e) {
+			e.printStackTrace();
+			return null;
+		}
+	}
+
+	/**
+	 * 获取阿里云OSS客户端对象
+	 *
+	 * @return ossClient
+	 */
+	public OSSClient getOSSClient() {
+		return (OSSClient) ossConfig.ossClient();
+	}
+
+	/**
+	 * 创建模拟文件夹
+	 *
+	 * @param ossClient  oss连接
+	 * @param bucketName 存储空间
+	 * @param folder     模拟文件夹名如"qj_nanjing/"
+	 * @return 文件夹名
+	 */
+	private String createFolder(OSSClient ossClient, String bucketName, String folder) {
+		//文件夹名
+		final String keySuffixWithSlash = folder;
+		//判断文件夹是否存在,不存在则创建
+		if (!ossClient.doesObjectExist(bucketName, keySuffixWithSlash)) {
+			//创建文件夹
+			ossClient.putObject(bucketName, keySuffixWithSlash, new ByteArrayInputStream(new byte[0]));
+			logger.info("创建文件夹成功");
+			//得到文件夹名
+			OSSObject object = ossClient.getObject(bucketName, keySuffixWithSlash);
+			String fileDir = object.getKey();
+			return fileDir;
+		}
+		return keySuffixWithSlash;
+	}
+
+	/**
+	 * 根据key删除OSS服务器上的文件
+	 *
+	 * @param ossClient  oss连接
+	 * @param bucketName 存储空间
+	 * @param folder     模拟文件夹名 如"qj_nanjing/"
+	 * @param key        Bucket下的文件的路径名+文件名 如:"upload/cake.jpg"
+	 */
+	private void deleteFile(OSSClient ossClient, String bucketName, String folder, String key) {
+		ossClient.deleteObject(bucketName, folder + key);
+		logger.info("删除" + bucketName + "下的文件" + folder + key + "成功");
+	}
+
+	/**
+	 * 根据key删除OSS服务器上的文件
+	 *
+	 * @param key Bucket下的文件的路径名+文件名 如:"upload/cake.jpg"
+	 */
+	private void deleteFile(String key) {
+		OSSClient ossClient = getOSSClient();
+		ossClient.deleteObject(ossConfig.getBucketName(), key);
+		logger.info("删除" + ossConfig.getBucketName() + "下的文件" + key + "成功");
+	}
+
+	private void uploadFile2OSS() {
+		// 创建OSSClient实例。
+		OSS ossClient = getOSSClient();
+
+		// 创建PutObjectRequest对象。
+		PutObjectRequest putObjectRequest = new PutObjectRequest(ossConfig.getBucketName(),
+				System.currentTimeMillis() + "",
+				new File("/Users/insomnialee/Pictures/五等分/13.png"));
+
+		// 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。
+		// ObjectMetadata metadata = new ObjectMetadata();
+		// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
+		// metadata.setObjectAcl(CannedAccessControlList.Private);
+		// putObjectRequest.setMetadata(metadata);
+
+		// 上传文件。
+		PutObjectResult res = ossClient.putObject(putObjectRequest);
+
+
+		// 关闭OSSClient。
+		ossClient.shutdown();
+	}
+
+	/**
+	 * 上传json文件
+	 *
+	 * @param file 上传文件(文件全路径如:D:\\image\\cake.jpg)
+	 * @return String 返回访问路径
+	 */
+	private String uploadObject2OSS(File file, String fileType) {
+		OSSClient ossClient = getOSSClient();
+		String resultStr = null;
+		String fileName = null;
+		try {
+			//以输入流的形式上传文件
+			InputStream is = new FileInputStream(file);
+			//文件名  如果出现重复,则重新生成名字,再上传
+			fileName = file.getName();
+//            if(ossClient.doesObjectExist(ossConfig.getBucketName(), ossConfig.getFolder() + fileName)){
+//                fileName = getfileName(file.getName());
+//            }
+			//文件大小
+			Long fileSize = file.length();
+			//创建上传Object的Metadata
+			ObjectMetadata metadata = new ObjectMetadata();
+			//上传的文件的长度
+			metadata.setContentLength(is.available());
+			//指定该Object被下载时的网页的缓存行为
+//            metadata.setCacheControl("no-cache");
+			//指定该Object下设置Header
+//            metadata.setHeader("Pragma", "no-cache");
+			//指定该Object被下载时的内容编码格式
+//            metadata.setContentEncoding("utf-8");
+			//文件的MIME,定义文件的类型及网页编码,决定浏览器将以什么形式、什么编码读取文件。如果用户没有指定则根据Key或文件名的扩展名生成,
+			//如果没有扩展名则填默认值application/octet-stream
+//            metadata.setContentType(getContentType(fileName));
+			//指定该Object被下载时的名称(指示MINME用户代理如何显示附加的文件,打开或下载,及文件名称)
+			metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte.");
+			//上传文件   (上传文件流的形式)
+			PutObjectResult putResult = ossClient.putObject(ossConfig.getBucketName(), ossConfig.getFolder() + "/" + fileType + fileName, is, metadata);
+			resultStr = putResult.getETag();
+			logger.info("上传阿里云OSS服务器成功." + resultStr);
+			//解析结果
+		} catch (Exception e) {
+			e.printStackTrace();
+			logger.error("上传阿里云OSS服务器异常." + e.getMessage(), e);
+		}
+		return "http://" + ossConfig.getBucketName() + "." + ossConfig.getEndPoint() + "/" + ossConfig.getFolder() + "/" + fileType + fileName;
+	}
+
+	/**
+	 * 通过文件名判断并获取OSS服务文件上传时文件的contentType
+	 *
+	 * @param fileName 文件名
+	 * @return 文件的contentType
+	 */
+	private String getContentType(String fileName) {
+		//文件的后缀名
+		String fileExtension = fileName.substring(fileName.lastIndexOf("."));
+		if (".bmp".equalsIgnoreCase(fileExtension)) {
+			return "image/bmp";
+		}
+		if (".gif".equalsIgnoreCase(fileExtension)) {
+			return "image/gif";
+		}
+		if (".jpeg".equalsIgnoreCase(fileExtension) || ".jpg".equalsIgnoreCase(fileExtension) || ".png".equalsIgnoreCase(fileExtension)) {
+			return "image/jpeg";
+		}
+		if (".html".equalsIgnoreCase(fileExtension)) {
+			return "text/html";
+		}
+		if (".txt".equalsIgnoreCase(fileExtension)) {
+			return "text/plain";
+		}
+		if (".vsd".equalsIgnoreCase(fileExtension)) {
+			return "application/vnd.visio";
+		}
+		if (".ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) {
+			return "application/vnd.ms-powerpoint";
+		}
+		if (".doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) {
+			return "application/msword";
+		}
+		if (".xml".equalsIgnoreCase(fileExtension)) {
+			return "text/xml";
+		}
+		//默认返回类型
+		return "image/jpeg";
+	}
+
+	/**
+	 * 修改文件名
+	 *
+	 * @param fileName 文件名
+	 * @return 文件的新名称
+	 */
+	private String getfileName(String fileName) {
+		String fileType = fileName.substring(fileName.lastIndexOf("."), fileName.length());
+		String name = System.currentTimeMillis() + fileType;
+		System.out.println(fileName + "----" + name);
+		return name;
+
+	}
+
+	/**
+	 * 上传三级菜单
+	 *
+	 * @param file 上传文件(文件全路径如:D:\\image\\cake.jpg)
+	 * @return String 返回访问路径
+	 */
+	private String uploadMultipartFile2OSS(MultipartFile file, String fileType) {
+		OSSClient ossClient = getOSSClient();
+		String resultStr = null;
+		String fileName = null;
+		try {
+			//以输入流的形式上传文件
+			InputStream is = file.getInputStream();
+			//文件名  如果出现重复,则重新生成名字,再上传
+			fileName = getfileName(file.getOriginalFilename());
+//            if(ossClient.doesObjectExist(ossConfig.getBucketName(), ossConfig.getFolder() + fileName)){
+//                fileName = getfileName(file.getName());
+//            }
+			//文件大小
+			Long fileSize = file.getSize();
+			//创建上传Object的Metadata
+			ObjectMetadata metadata = new ObjectMetadata();
+			//上传的文件的长度
+			metadata.setContentLength(is.available());
+			//指定该Object被下载时的网页的缓存行为
+//            metadata.setCacheControl("no-cache");
+			//指定该Object下设置Header
+//            metadata.setHeader("Pragma", "no-cache");
+			//指定该Object被下载时的内容编码格式
+//            metadata.setContentEncoding("utf-8");
+			//文件的MIME,定义文件的类型及网页编码,决定浏览器将以什么形式、什么编码读取文件。如果用户没有指定则根据Key或文件名的扩展名生成,
+			//如果没有扩展名则填默认值application/octet-stream
+//            metadata.setContentType(getContentType(fileName));
+			//指定该Object被下载时的名称(指示MINME用户代理如何显示附加的文件,打开或下载,及文件名称)
+			metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte.");
+			//上传文件   (上传文件流的形式)
+			PutObjectResult putResult = ossClient.putObject(ossConfig.getBucketName(), ossConfig.getFolder() + "/" + fileType + fileName, is, metadata);
+			resultStr = putResult.getETag();
+			logger.info("上传阿里云OSS服务器成功." + resultStr);
+			//解析结果
+		} catch (Exception e) {
+			e.printStackTrace();
+			logger.error("上传阿里云OSS服务器异常." + e.getMessage(), e);
+		}
+		return "http://" + ossConfig.getBucketName() + "." + ossConfig.getEndPoint() + "/" + ossConfig.getFolder() + "/" + fileType + fileName;
+	}
+
+	public String uploadSingleFile(MultipartFile file, String fileType) {
+		return uploadMultipartFile2OSS(file, fileType);
+	}
+
+	public String uploadSingleFile(File file, String fileType) {
+		return uploadObject2OSS(file, fileType);
+	}
 
 }

+ 0 - 371
src/main/java/com/mooctest/util/OSSClientUtil.java

@@ -1,381 +1,10 @@
 package com.mooctest.util;
 
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-
-import com.aliyun.oss.OSS;
-import com.aliyun.oss.OSSClientBuilder;
-import com.aliyun.oss.model.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.aliyun.oss.OSSClient;
-import org.springframework.web.multipart.MultipartFile;
-
 /**
  * @class:AliyunOSSClientUtil
  * @descript:java使用阿里云OSS存储对象上传图片
  *
  */
 public class OSSClientUtil {
-    //log日志
-    private static Logger logger = LoggerFactory.getLogger(OSSClientUtil.class);
-
-
-    //阿里云API的内或外网域名
-    private static String ENDPOINT = "oss-cn-shanghai.aliyuncs.com";
-    //阿里云API的密钥Access Key ID
-    private static String ACCESS_KEY_ID="LTAI4FdrT3HsfdR5edBVN7ws";
-    //阿里云API的密钥Access Key Secret
-    private static String ACCESS_KEY_SECRET="yroxrpm46DzTyzHrLBZzS3MRNIicP6";
-    //阿里云API的bucket名称
-    private static String BACKET_NAME="mooctest-site";
-    //阿里云API的文件夹名称
-    private static String FOLDER="xinchuangJson";
-
-
-
-
-    /**
-     * 获取阿里云OSS客户端对象
-     * @return ossClient
-     */
-    public static  OSSClient getOSSClient(){
-        return new OSSClient(ENDPOINT,ACCESS_KEY_ID, ACCESS_KEY_SECRET);
-    }
-
-    /**
-     * 创建存储空间
-     * @param ossClient      OSS连接
-     * @param bucketName 存储空间
-     * @return
-     */
-    private  static String createBucketName(OSSClient ossClient,String bucketName){
-        //存储空间
-        final String bucketNames=bucketName;
-        if(!ossClient.doesBucketExist(bucketName)){
-            //创建存储空间
-            Bucket bucket=ossClient.createBucket(bucketName);
-            logger.info("创建存储空间成功");
-            return bucket.getName();
-        }
-        return bucketNames;
-    }
-
-    /**
-     * 创建存储空间
-     * @param ossClient      OSS连接
-     * @param bucketName 存储空间
-     * @return
-     */
-    private  static void putBucketACL(OSSClient ossClient,String bucketName){
-        //存储空间
-        final String bucketNames=bucketName;
-        System.out.println(ossClient.doesBucketExist(bucketName));
-        if(ossClient.doesBucketExist(bucketName)){
-            //修改存储空间的权限
-            ossClient.setBucketAcl(bucketNames, CannedAccessControlList.PublicRead);
-            logger.info("创建存储空间成功");
-        }
-    }
-
-    /**
-     * 删除存储空间buckName
-     * @param ossClient  oss对象
-     * @param bucketName  存储空间
-     */
-    private static  void deleteBucket(OSSClient ossClient, String bucketName){
-        ossClient.deleteBucket(bucketName);
-        logger.info("删除" + bucketName + "Bucket成功");
-    }
-
-    /**
-     * 创建模拟文件夹
-     * @param ossClient oss连接
-     * @param bucketName 存储空间
-     * @param folder   模拟文件夹名如"qj_nanjing/"
-     * @return  文件夹名
-     */
-    private  static String createFolder(OSSClient ossClient,String bucketName,String folder){
-        //文件夹名
-        final String keySuffixWithSlash =folder;
-        //判断文件夹是否存在,不存在则创建
-        if(!ossClient.doesObjectExist(bucketName, keySuffixWithSlash)){
-            //创建文件夹
-            ossClient.putObject(bucketName, keySuffixWithSlash, new ByteArrayInputStream(new byte[0]));
-            logger.info("创建文件夹成功");
-            //得到文件夹名
-            OSSObject object = ossClient.getObject(bucketName, keySuffixWithSlash);
-            String fileDir=object.getKey();
-            return fileDir;
-        }
-        return keySuffixWithSlash;
-    }
-
-    /**
-     * 根据key删除OSS服务器上的文件
-     * @param ossClient  oss连接
-     * @param bucketName  存储空间
-     * @param folder  模拟文件夹名 如"qj_nanjing/"
-     * @param key Bucket下的文件的路径名+文件名 如:"upload/cake.jpg"
-     */
-    private static void deleteFile(OSSClient ossClient, String bucketName, String folder, String key){
-        ossClient.deleteObject(bucketName, folder + key);
-        logger.info("删除" + bucketName + "下的文件" + folder + key + "成功");
-    }
-    /**
-     * 根据key删除OSS服务器上的文件
-     * @param key Bucket下的文件的路径名+文件名 如:"upload/cake.jpg"
-     */
-    private static void deleteFile(String key){
-        OSSClient ossClient = getOSSClient();
-        ossClient.deleteObject(BACKET_NAME,key);
-        logger.info("删除" + BACKET_NAME + "下的文件" + key + "成功");
-    }
-
-    private static void uploadFile2OSS(){
-        // Endpoint以杭州为例,其它Region请按实际情况填写。
-        String endpoint = ENDPOINT;
-        // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
-        String accessKeyId = ACCESS_KEY_ID;
-        String accessKeySecret = ACCESS_KEY_SECRET;
-
-        // 创建OSSClient实例。
-        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
-
-        // 创建PutObjectRequest对象。
-        PutObjectRequest putObjectRequest = new PutObjectRequest(BACKET_NAME,
-                System.currentTimeMillis()+"",
-                new File("/Users/insomnialee/Pictures/五等分/13.png"));
-
-        // 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。
-        // ObjectMetadata metadata = new ObjectMetadata();
-        // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
-        // metadata.setObjectAcl(CannedAccessControlList.Private);
-        // putObjectRequest.setMetadata(metadata);
-
-        // 上传文件。
-        PutObjectResult res = ossClient.putObject(putObjectRequest);
-
-
-        // 关闭OSSClient。
-        ossClient.shutdown();
-    }
-
-    /**
-     * 上传图片至OSS
-     * @param file 上传文件(文件全路径如:D:\\image\\cake.jpg)
-     * @return String 返回访问路径
-     * */
-    private static  String uploadObject2OSS(File file) {
-        OSSClient ossClient = getOSSClient();
-        String resultStr = null;
-        String fileName = null;
-        try {
-            //以输入流的形式上传文件
-            InputStream is = new FileInputStream(file);
-            //文件名  如果出现重复,则重新生成名字,再上传
-            fileName = file.getName();
-//            if(ossClient.doesObjectExist(BACKET_NAME, FOLDER + fileName)){
-//                fileName = getfileName(file.getName());
-//            }
-            //文件大小
-            Long fileSize = file.length();
-            //创建上传Object的Metadata
-            ObjectMetadata metadata = new ObjectMetadata();
-            //上传的文件的长度
-            metadata.setContentLength(is.available());
-            //指定该Object被下载时的网页的缓存行为
-//            metadata.setCacheControl("no-cache");
-            //指定该Object下设置Header
-//            metadata.setHeader("Pragma", "no-cache");
-            //指定该Object被下载时的内容编码格式
-//            metadata.setContentEncoding("utf-8");
-            //文件的MIME,定义文件的类型及网页编码,决定浏览器将以什么形式、什么编码读取文件。如果用户没有指定则根据Key或文件名的扩展名生成,
-            //如果没有扩展名则填默认值application/octet-stream
-//            metadata.setContentType(getContentType(fileName));
-            //指定该Object被下载时的名称(指示MINME用户代理如何显示附加的文件,打开或下载,及文件名称)
-            metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte.");
-            //上传文件   (上传文件流的形式)
-            PutObjectResult putResult = ossClient.putObject(BACKET_NAME, FOLDER +"/"+ fileName, is, metadata);
-            resultStr = putResult.getETag();
-            logger.info("上传阿里云OSS服务器成功." +resultStr);
-            //解析结果
-        } catch (Exception e) {
-            e.printStackTrace();
-            logger.error("上传阿里云OSS服务器异常." + e.getMessage(), e);
-        }
-        return "http://"+BACKET_NAME+"."+ENDPOINT+"/"+FOLDER +"/"+ fileName;
-    }
-    /**
-     * 上传图片至OSS
-     * @param in 上传文件流
-     * @return String 返回访问路径,图片存储KEY
-     * */
-    private static  String uploadObject2OSS(InputStream in,String name,Long size) {
-        OSSClient ossClient = getOSSClient();
-        String resultStr = null;
-        String fileName = null;
-        try {
-            //文件名  如果出现重复,则重新生成名字,再上传
-            fileName = getfileName(name);
-            if(ossClient.doesObjectExist(BACKET_NAME, FOLDER + fileName)){
-                fileName = getfileName(name);
-            }
-            //文件大小
-            Long fileSize = size;
-            //创建上传Object的Metadata
-            ObjectMetadata metadata = new ObjectMetadata();
-            //上传的文件的长度
-            metadata.setContentLength(in.available());
-            //指定该Object被下载时的网页的缓存行为
-            metadata.setCacheControl("no-cache");
-            //指定该Object下设置Header
-            metadata.setHeader("Pragma", "no-cache");
-            //指定该Object被下载时的内容编码格式
-            metadata.setContentEncoding("utf-8");
-            //文件的MIME,定义文件的类型及网页编码,决定浏览器将以什么形式、什么编码读取文件。如果用户没有指定则根据Key或文件名的扩展名生成,
-            //如果没有扩展名则填默认值application/octet-stream
-            metadata.setContentType(getContentType(fileName));
-            //指定该Object被下载时的名称(指示MINME用户代理如何显示附加的文件,打开或下载,及文件名称)
-            metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte.");
-            //上传文件   (上传文件流的形式)
-            PutObjectResult putResult = ossClient.putObject(BACKET_NAME, FOLDER + fileName, in, metadata);
-            resultStr = putResult.getETag();
-            logger.info("上传阿里云OSS服务器成功." +resultStr);
-            //解析结果
-        } catch (Exception e) {
-            e.printStackTrace();
-            logger.error("上传阿里云OSS服务器异常." + e.getMessage(), e);
-        }
-        return BACKET_NAME+"."+ENDPOINT+"/"+FOLDER + fileName;
-    }
-
-    /**
-     * 通过文件名判断并获取OSS服务文件上传时文件的contentType
-     * @param fileName 文件名
-     * @return 文件的contentType
-     */
-    private static  String getContentType(String fileName){
-        //文件的后缀名
-        String fileExtension = fileName.substring(fileName.lastIndexOf("."));
-        if(".bmp".equalsIgnoreCase(fileExtension)) {
-            return "image/bmp";
-        }
-        if(".gif".equalsIgnoreCase(fileExtension)) {
-            return "image/gif";
-        }
-        if(".jpeg".equalsIgnoreCase(fileExtension) || ".jpg".equalsIgnoreCase(fileExtension)  || ".png".equalsIgnoreCase(fileExtension) ) {
-            return "image/jpeg";
-        }
-        if(".html".equalsIgnoreCase(fileExtension)) {
-            return "text/html";
-        }
-        if(".txt".equalsIgnoreCase(fileExtension)) {
-            return "text/plain";
-        }
-        if(".vsd".equalsIgnoreCase(fileExtension)) {
-            return "application/vnd.visio";
-        }
-        if(".ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) {
-            return "application/vnd.ms-powerpoint";
-        }
-        if(".doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) {
-            return "application/msword";
-        }
-        if(".xml".equalsIgnoreCase(fileExtension)) {
-            return "text/xml";
-        }
-        //默认返回类型
-        return "image/jpeg";
-    }
-
-    /**
-     * 修改文件名
-     * @param fileName 文件名
-     * @return 文件的新名称
-     */
-    private static  String getfileName(String fileName){
-        String fileType = fileName.substring(fileName.lastIndexOf("."), fileName.length());
-        String name = System.currentTimeMillis()+fileType;
-        System.out.println(fileName+"----"+name);
-        return name;
-
-    }
-
-    /**
-     * 上传图片至OSS
-     * @param file 上传文件(文件全路径如:D:\\image\\cake.jpg)
-     * @return String 返回访问路径
-     * */
-    private  static  String uploadMultipartFile2OSS(MultipartFile file) {
-        OSSClient ossClient = getOSSClient();
-        String resultStr = null;
-        String fileName = null;
-        try {
-            //以输入流的形式上传文件
-            InputStream is = file.getInputStream();
-            //文件名  如果出现重复,则重新生成名字,再上传
-            fileName = getfileName(file.getOriginalFilename());
-//            if(ossClient.doesObjectExist(BACKET_NAME, FOLDER + fileName)){
-//                fileName = getfileName(file.getName());
-//            }
-            //文件大小
-            Long fileSize = file.getSize();
-            //创建上传Object的Metadata
-            ObjectMetadata metadata = new ObjectMetadata();
-            //上传的文件的长度
-            metadata.setContentLength(is.available());
-            //指定该Object被下载时的网页的缓存行为
-//            metadata.setCacheControl("no-cache");
-            //指定该Object下设置Header
-//            metadata.setHeader("Pragma", "no-cache");
-            //指定该Object被下载时的内容编码格式
-//            metadata.setContentEncoding("utf-8");
-            //文件的MIME,定义文件的类型及网页编码,决定浏览器将以什么形式、什么编码读取文件。如果用户没有指定则根据Key或文件名的扩展名生成,
-            //如果没有扩展名则填默认值application/octet-stream
-//            metadata.setContentType(getContentType(fileName));
-            //指定该Object被下载时的名称(指示MINME用户代理如何显示附加的文件,打开或下载,及文件名称)
-            metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte.");
-            //上传文件   (上传文件流的形式)
-            PutObjectResult putResult = ossClient.putObject(BACKET_NAME, FOLDER + "/"+ fileName, is, metadata);
-            resultStr = putResult.getETag();
-            logger.info("上传阿里云OSS服务器成功." +resultStr);
-            //解析结果
-        } catch (Exception e) {
-            e.printStackTrace();
-            logger.error("上传阿里云OSS服务器异常." + e.getMessage(), e);
-        }
-        return "http://"+BACKET_NAME+"."+ENDPOINT+"/"+FOLDER + "/" + fileName;
-    }
-
-    public static  String uploadSingleFile(MultipartFile file){
-        OSSClient ossClient=OSSClientUtil.getOSSClient();
-        return uploadMultipartFile2OSS(file);
-    }
-
-    public static  String uploadSingleFile(File file){
-//        OSSClient ossClient=OSSClientUtil.getOSSClient();
-        return uploadObject2OSS(file);
-    }
-
-    //测试
-//    public static void main(String[] args) throws Exception {
-//        uploadFile2OSS();
-//        //初始化OSSClient
-//        OSSClient ossClient=OSSClientUtil.getOSSClient();
-//        //上传文件
-//        String files="/Users/insomnialee/Pictures/五等分/13.png";
-//        String[] file=files.split(",");
-//        for(String filename:file){
-//            //System.out.println("filename:"+filename);
-//            File filess=new File(filename);
-//            String md5key = OSSClientUtil.uploadObject2OSS(filess);
-//            System.out.println("文件地址:" + md5key);
-//        }
-//    }
-
 
 }

+ 11 - 3
src/main/resources/application.yml

@@ -1,3 +1,4 @@
+#spring.profiles.active: private-cloud
 spring.profiles.active: dev-online
 spring:
   mvc:
@@ -19,6 +20,13 @@ logging:
     console: "%d{yyyy-MM-dd HH:mm:ss} [%p] [%t] [%c] %m%n"
 
 server.port: 9004
+
+oss:
+  accessKeyId: LTAI4FdrT3HsfdR5edBVN7ws
+  accessKeySecret: yroxrpm46DzTyzHrLBZzS3MRNIicP6
+  endPoint: oss-cn-shanghai.aliyuncs.com
+  bucketName: mooctest-site
+  folder: xinchuang
 ---
 spring:
   profiles: dev-online
@@ -41,7 +49,7 @@ baseUrl:
   urlPath: http://47.98.174.59:8100/resourcesXinchuang/
 
 useOss: true
-filePath: /Users/insomnialee/Desktop/now/
+#filePath: /Users/guochao/Desktop/corwd-file/xinchuang/json/
 ---
 spring:
   profiles: private-cloud
@@ -60,8 +68,8 @@ baseUrl:
   report:
     export: http://47.99.140.117:9002/generateReport
     excel: http://47.98.174.59:8095/generateReport
-    host: 47.98.174.59:8100
+    host: 127.0.0.1:8090
   urlPath: http://47.98.174.59:8100/resourcesXinchuang/
 
 useOss: false
-filePath: /xinchuang/data/
+filePath: /Users/guochao/Desktop/corwd-file/xinchuang/json/