ZhangWenQiang пре 6 година
родитељ
комит
c1b36ee629

+ 12 - 12
happy-boot-base-common/src/main/java/org/jeecg/common/oss/OSSClientUtil.java

@@ -4,7 +4,6 @@ import com.aliyun.oss.ClientException;
 import com.aliyun.oss.OSSClient;
 import com.aliyun.oss.OSSException;
 import com.aliyun.oss.model.*;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
@@ -21,16 +20,17 @@ import java.util.*;
  * Created by Meng on 2017/6/8.
  */
 public class OSSClientUtil {
-    @Value("${jeecg.oss.endpoint}")
-    private String endpoint;
-    @Value("${jeecg.oss.accessKeyId}")
-    private String accessKeyId;
-    @Value("${jeecg.oss.accessKeySecret}")
-    private String accessKeySecret;
-    @Value("${jeecg.oss.bucketName}")
-    private String bucketName;
-    @Value("${jeecg.oss.aliyunUrl}")
-    private String savePath;
+
+    private static String endpoint = "oss-cn-shanghai.aliyuncs.com";
+
+    private static String accessKeyId = "LTAIdrFEg3iDHDzd";
+
+    private static String accessKeySecret = "72NuLZN12fVHLstI3iQdn13XGKSrpx";
+
+    private static String bucketName = "hpjobtest";
+
+    private static String savePath = "https://hpjobtest.oss-cn-shanghai.aliyuncs.com";
+
     private OSSClient ossClient;
 
     public OSSClientUtil() {
@@ -60,7 +60,7 @@ public class OSSClientUtil {
         String originalFilename = file.getOriginalFilename();
         String substring = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();
         String fileName = "";
-        fileDir = fileDir+System.nanoTime()+"/";
+        fileDir = fileDir + System.nanoTime() + "/";
         String md5 = "";
         File f = null;
         try {

+ 31 - 0
happy-boot-base-common/src/main/java/org/jeecg/common/oss/OSSConfig.java

@@ -0,0 +1,31 @@
+package org.jeecg.common.oss;
+
+import com.aliyun.oss.OSSClient;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * OSS配置
+ */
+@Configuration
+@Data
+public class OSSConfig {
+    @Value("${jeecg.oss.endpoint}")
+    private String endpoint;
+    @Value("${jeecg.oss.accessKeyId}")
+    private String accessKeyId;
+    @Value("${jeecg.oss.accessKeySecret}")
+    private String accessKeySecret;
+    @Value("${jeecg.oss.bucketName}")
+    private String bucketName;
+    @Value("${jeecg.oss.aliyunUrl}")
+    private String savePath;
+    private OSSClient ossClient;
+
+    @Bean("ossClients")
+    public OSSClient ossClient() {
+        return new OSSClient(endpoint, accessKeyId, accessKeySecret);
+    }
+}

+ 232 - 194
happy-boot-base-common/src/main/java/org/jeecg/common/system/controller/CommonController.java

@@ -1,31 +1,25 @@
 package org.jeecg.common.system.controller;
 
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.oss.OSSClientUtil;
+import org.jeecg.common.system.vo.LoginUser;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.AntPathMatcher;
 import org.springframework.util.FileCopyUtils;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartHttpServletRequest;
 import org.springframework.web.servlet.HandlerMapping;
 import org.springframework.web.servlet.ModelAndView;
 
-import lombok.extern.slf4j.Slf4j;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
 
 /**
  * <p>
@@ -40,181 +34,225 @@ import lombok.extern.slf4j.Slf4j;
 @RequestMapping("/sys/common")
 public class CommonController {
 
-	@Value(value = "${jeecg.path.upload}")
-	private String uploadpath;
-
-	/**
-	 * @Author 政辉
-	 * @return
-	 */
-	@GetMapping("/403")
-	public Result<?> noauth()  {
-		return Result.error("没有权限,请联系管理员授权");
-	}
-	
-	@PostMapping(value = "/upload")
-	public Result<?> upload(HttpServletRequest request, HttpServletResponse response) {
-		Result<?> result = new Result<>();
-		try {
-			String ctxPath = uploadpath;
-			String fileName = null;
-			String bizPath = "files";
-			String nowday = new SimpleDateFormat("yyyyMMdd").format(new Date());
-			File file = new File(ctxPath + File.separator + bizPath + File.separator + nowday);
-			if (!file.exists()) {
-				file.mkdirs();// 创建文件根目录
-			}
-			MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-			MultipartFile mf = multipartRequest.getFile("file");// 获取上传文件对象
-			String orgName = mf.getOriginalFilename();// 获取文件名
-			fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.indexOf("."));
-			String savePath = file.getPath() + File.separator + fileName;
-			File savefile = new File(savePath);
-			FileCopyUtils.copy(mf.getBytes(), savefile);
-			String dbpath = bizPath + File.separator + nowday + File.separator + fileName;
-			if (dbpath.contains("\\")) {
-				dbpath = dbpath.replace("\\", "/");
-			}
-			result.setMessage(dbpath);
-			result.setSuccess(true);
-		} catch (IOException e) {
-			result.setSuccess(false);
-			result.setMessage(e.getMessage());
-			log.error(e.getMessage(), e);
-		}
-		return result;
-	}
-
-	/**
-	 * 预览图片
-	 * 请求地址:http://localhost:8080/common/view/{user/20190119/e1fe9925bc315c60addea1b98eb1cb1349547719_1547866868179.jpg}
-	 * 
-	 * @param request
-	 * @param response
-	 */
-	@GetMapping(value = "/view/**")
-	public void view(HttpServletRequest request, HttpServletResponse response) {
-		// ISO-8859-1 ==> UTF-8 进行编码转换
-		String imgPath = extractPathFromPattern(request);
-		// 其余处理略
-		InputStream inputStream = null;
-		OutputStream outputStream = null;
-		try {
-			imgPath = imgPath.replace("..", "");
-			if (imgPath.endsWith(",")) {
-				imgPath = imgPath.substring(0, imgPath.length() - 1);
-			}
-			response.setContentType("image/jpeg;charset=utf-8");
-			String localPath = uploadpath;
-			String imgurl = localPath + File.separator + imgPath;
-			inputStream = new BufferedInputStream(new FileInputStream(imgurl));
-			outputStream = response.getOutputStream();
-			byte[] buf = new byte[1024];
-			int len;
-			while ((len = inputStream.read(buf)) > 0) {
-				outputStream.write(buf, 0, len);
-			}
-			response.flushBuffer();
-		} catch (IOException e) {
-			log.error("预览图片失败" + e.getMessage());
-			// e.printStackTrace();
-		} finally {
-			if (inputStream != null) {
-				try {
-					inputStream.close();
-				} catch (IOException e) {
-					log.error(e.getMessage(), e);
-				}
-			}
-			if (outputStream != null) {
-				try {
-					outputStream.close();
-				} catch (IOException e) {
-					log.error(e.getMessage(), e);
-				}
-			}
-		}
-
-	}
-	
-	/**
-	 * 下载文件
-	 * 请求地址:http://localhost:8080/common/download/{user/20190119/e1fe9925bc315c60addea1b98eb1cb1349547719_1547866868179.jpg}
-	 * 
-	 * @param request
-	 * @param response
-	 * @throws Exception 
-	 */
-	@GetMapping(value = "/download/**")
-	public void download(HttpServletRequest request, HttpServletResponse response) throws Exception {
-		// ISO-8859-1 ==> UTF-8 进行编码转换
-		String filePath = extractPathFromPattern(request);
-		// 其余处理略
-		InputStream inputStream = null;
-		OutputStream outputStream = null;
-		try {
-			filePath = filePath.replace("..", "");
-			if (filePath.endsWith(",")) {
-				filePath = filePath.substring(0, filePath.length() - 1);
-			}
-			String localPath = uploadpath;
-			String downloadFilePath = localPath + File.separator + filePath;
-			File file = new File(downloadFilePath);
-	         if (file.exists()) {
-	        	 response.setContentType("application/force-download");// 设置强制下载不打开            
-	 			response.addHeader("Content-Disposition", "attachment;fileName=" + new String(file.getName().getBytes("UTF-8"),"iso-8859-1"));
-	 			inputStream = new BufferedInputStream(new FileInputStream(file));
-	 			outputStream = response.getOutputStream();
-	 			byte[] buf = new byte[1024];
-	 			int len;
-	 			while ((len = inputStream.read(buf)) > 0) {
-	 				outputStream.write(buf, 0, len);
-	 			}
-	 			response.flushBuffer();
-	         }
-			
-		} catch (Exception e) {
-			log.info("文件下载失败" + e.getMessage());
-			// e.printStackTrace();
-		} finally {
-			if (inputStream != null) {
-				try {
-					inputStream.close();
-				} catch (IOException e) {
-					e.printStackTrace();
-				}
-			}
-			if (outputStream != null) {
-				try {
-					outputStream.close();
-				} catch (IOException e) {
-					e.printStackTrace();
-				}
-			}
-		}
-
-	}
-	/**
-	 * @功能:pdf预览Iframe
-	 * @param modelAndView
-	 * @return
-	 */
-	@RequestMapping("/pdf/pdfPreviewIframe")
-	public ModelAndView pdfPreviewIframe(ModelAndView modelAndView) {
-		modelAndView.setViewName("pdfPreviewIframe");
-		return modelAndView;
-	}
-
-	/**
-	  *  把指定URL后的字符串全部截断当成参数 
-	  *  这么做是为了防止URL中包含中文或者特殊字符(/等)时,匹配不了的问题
-	 * @param request
-	 * @return
-	 */
-	private static String extractPathFromPattern(final HttpServletRequest request) {
-		String path = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
-		String bestMatchPattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
-		return new AntPathMatcher().extractPathWithinPattern(bestMatchPattern, path);
-	}
-	
+    @Value(value = "${jeecg.path.upload}")
+    private String uploadpath;
+    /**
+     * 上传文件到oss的基础虚拟路径
+     */
+    public static final String USERFILES_BASE_URL = "uploadfiles";
+
+    /**
+     * @return
+     * @Author 政辉
+     */
+    @GetMapping("/403")
+    public Result<?> noauth() {
+        return Result.error("没有权限,请联系管理员授权");
+    }
+
+    @PostMapping(value = "/upload")
+    public Result<?> upload(HttpServletRequest request, HttpServletResponse response) {
+        Result<?> result = new Result<>();
+        try {
+            String ctxPath = uploadpath;
+            String fileName = null;
+            String bizPath = "files";
+            String nowday = new SimpleDateFormat("yyyyMMdd").format(new Date());
+            File file = new File(ctxPath + File.separator + bizPath + File.separator + nowday);
+            if (!file.exists()) {
+                file.mkdirs();// 创建文件根目录
+            }
+            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+            MultipartFile mf = multipartRequest.getFile("file");// 获取上传文件对象
+            String orgName = mf.getOriginalFilename();// 获取文件名
+            fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.indexOf("."));
+            String savePath = file.getPath() + File.separator + fileName;
+            File savefile = new File(savePath);
+            FileCopyUtils.copy(mf.getBytes(), savefile);
+            String dbpath = bizPath + File.separator + nowday + File.separator + fileName;
+            if (dbpath.contains("\\")) {
+                dbpath = dbpath.replace("\\", "/");
+            }
+            result.setMessage(dbpath);
+            result.setSuccess(true);
+        } catch (IOException e) {
+            result.setSuccess(false);
+            result.setMessage(e.getMessage());
+            log.error(e.getMessage(), e);
+        }
+        return result;
+    }
+
+    /**
+     * 预览图片
+     * 请求地址:http://localhost:8080/common/view/{user/20190119/e1fe9925bc315c60addea1b98eb1cb1349547719_1547866868179.jpg}
+     *
+     * @param request
+     * @param response
+     */
+    @GetMapping(value = "/view/**")
+    public void view(HttpServletRequest request, HttpServletResponse response) {
+        // ISO-8859-1 ==> UTF-8 进行编码转换
+        String imgPath = extractPathFromPattern(request);
+        // 其余处理略
+        InputStream inputStream = null;
+        OutputStream outputStream = null;
+        try {
+            imgPath = imgPath.replace("..", "");
+            if (imgPath.endsWith(",")) {
+                imgPath = imgPath.substring(0, imgPath.length() - 1);
+            }
+            response.setContentType("image/jpeg;charset=utf-8");
+            String localPath = uploadpath;
+            String imgurl = localPath + File.separator + imgPath;
+            inputStream = new BufferedInputStream(new FileInputStream(imgurl));
+            outputStream = response.getOutputStream();
+            byte[] buf = new byte[1024];
+            int len;
+            while ((len = inputStream.read(buf)) > 0) {
+                outputStream.write(buf, 0, len);
+            }
+            response.flushBuffer();
+        } catch (IOException e) {
+            log.error("预览图片失败" + e.getMessage());
+            // e.printStackTrace();
+        } finally {
+            if (inputStream != null) {
+                try {
+                    inputStream.close();
+                } catch (IOException e) {
+                    log.error(e.getMessage(), e);
+                }
+            }
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    log.error(e.getMessage(), e);
+                }
+            }
+        }
+
+    }
+
+    /**
+     * 下载文件
+     * 请求地址:http://localhost:8080/common/download/{user/20190119/e1fe9925bc315c60addea1b98eb1cb1349547719_1547866868179.jpg}
+     *
+     * @param request
+     * @param response
+     * @throws Exception
+     */
+    @GetMapping(value = "/download/**")
+    public void download(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        // ISO-8859-1 ==> UTF-8 进行编码转换
+        String filePath = extractPathFromPattern(request);
+        // 其余处理略
+        InputStream inputStream = null;
+        OutputStream outputStream = null;
+        try {
+            filePath = filePath.replace("..", "");
+            if (filePath.endsWith(",")) {
+                filePath = filePath.substring(0, filePath.length() - 1);
+            }
+            String localPath = uploadpath;
+            String downloadFilePath = localPath + File.separator + filePath;
+            File file = new File(downloadFilePath);
+            if (file.exists()) {
+                response.setContentType("application/force-download");// 设置强制下载不打开            
+                response.addHeader("Content-Disposition", "attachment;fileName=" + new String(file.getName().getBytes("UTF-8"), "iso-8859-1"));
+                inputStream = new BufferedInputStream(new FileInputStream(file));
+                outputStream = response.getOutputStream();
+                byte[] buf = new byte[1024];
+                int len;
+                while ((len = inputStream.read(buf)) > 0) {
+                    outputStream.write(buf, 0, len);
+                }
+                response.flushBuffer();
+            }
+
+        } catch (Exception e) {
+            log.info("文件下载失败" + e.getMessage());
+            // e.printStackTrace();
+        } finally {
+            if (inputStream != null) {
+                try {
+                    inputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+
+    }
+
+    /**
+     * @param modelAndView
+     * @return
+     * @功能:pdf预览Iframe
+     */
+    @RequestMapping("/pdf/pdfPreviewIframe")
+    public ModelAndView pdfPreviewIframe(ModelAndView modelAndView) {
+        modelAndView.setViewName("pdfPreviewIframe");
+        return modelAndView;
+    }
+
+    /**
+     * 把指定URL后的字符串全部截断当成参数
+     * 这么做是为了防止URL中包含中文或者特殊字符(/等)时,匹配不了的问题
+     *
+     * @param request
+     * @return
+     */
+    private static String extractPathFromPattern(final HttpServletRequest request) {
+        String path = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
+        String bestMatchPattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
+        return new AntPathMatcher().extractPathWithinPattern(bestMatchPattern, path);
+    }
+
+    /**
+     * 上传文件OSS
+     *
+     * @return
+     * @throws IOException
+     * @throws IllegalStateException
+     */
+    @RequestMapping(value = "/ossUpload")
+    @ResponseBody
+    public Result<?> webupload(HttpServletRequest request, HttpServletResponse response) throws IllegalStateException {
+        Result<?> result = new Result<>();
+        try {
+            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+            MultipartFile file = multipartRequest.getFile("file");// 获取上传文件对象
+
+            LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+            String uploadPath = "/hppay/user";
+            OSSClientUtil ossUtil = new OSSClientUtil();
+            //获取当前年月
+            Calendar cal = Calendar.getInstance();
+            int year = cal.get(Calendar.YEAR);
+            int month = cal.get(Calendar.MONTH) + 1;
+            String fileDir = USERFILES_BASE_URL + uploadPath + "/" + sysUser.getUsername() + "/" + year + "/" + month + "/";
+            // 判断文件是否为空
+            if (!file.isEmpty()) {
+                String filePath = ossUtil.uploadImg2OSS(file, fileDir);
+                System.out.println("lu" + filePath);
+                result.setMessage(filePath);
+                result.setSuccess(true);
+            }
+        } catch (Exception e) {
+            result.setSuccess(false);
+            result.setMessage(e.getMessage());
+            log.error(e.getMessage(), e);
+        }
+        return result;
+    }
+
 }