123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- package com.ym.mec.biz.service;
- import java.io.*;
- import org.apache.commons.io.FileUtils;
- import org.apache.commons.io.IOUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.scheduling.annotation.Async;
- import org.springframework.stereotype.Service;
- import com.ym.mec.common.entity.UploadReturnBean;
- import com.ym.mec.common.exception.BizException;
- import com.ym.mec.thirdparty.storage.StoragePluginContext;
- import com.ym.mec.thirdparty.storage.provider.KS3StoragePlugin;
- import com.ym.mec.util.upload.UploadUtil;
- import org.springframework.web.multipart.MultipartFile;
- /**
- * 上传工具服务层实现类
- */
- @Service
- public class UploadFileService {
- @Autowired
- private StoragePluginContext storagePluginContext;
- /** 最大上传大小,单位kb */
- @Value("${common.upload.maxSize:153600}")
- private int maxSize;
- /** 支持的扩展名 */
- @Value("${common.upload.supportExtensions:jpg,jpeg,gif,png,mp3,mid,midi,aac,m4a,mp4,xml}")
- private String supportExtensions;
- /** 文件根目录 */
- @Value("/var/tmp/")
- private String fileRoot;
- public UploadReturnBean uploadFile(InputStream in, String ext) {
- UploadReturnBean uploadReturn = new UploadReturnBean("", false, "");
- String fileName = UploadUtil.getFileName(ext);
- String supportType = supportExtensions;
- if (!UploadUtil.validateImgFile(ext, supportType)) {
- uploadReturn.setMessage("上传图片格式错误,目前只支持" + supportType);
- return uploadReturn;
- }
- String root = fileRoot;
- if (StringUtils.isBlank(root)) {
- uploadReturn.setMessage("上传临时目录没有配置");
- return uploadReturn;
- }
- String staticFloder = "";
- String folder = UploadUtil.getFileFloder();
- String filePath = UploadUtil.getFilePath(root, staticFloder, folder);
- File file = uploadFile(in, filePath, fileName);
- if (maxSize > 0 && maxSize < file.length() / 1024) {
- FileUtils.deleteQuietly(file);
- uploadReturn.setMessage("超出允许的大小(" + (maxSize / 1024) + "M)限制");
- return uploadReturn;
- }
- //String url = storagePlugin.uploadFile(staticFloder + folder, file);
- String url = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME,staticFloder + folder, file);
- FileUtils.deleteQuietly(file);
- uploadReturn.setStatus(true);
- uploadReturn.setUrl(url);
- return uploadReturn;
- }
- @Async
- public UploadReturnBean uploadImHistoryMsgFile(File msgFile) throws FileNotFoundException {
- InputStream in = new FileInputStream(msgFile);
- UploadReturnBean uploadReturn = new UploadReturnBean("", false, "");
- String fileName = UploadUtil.getFileName(msgFile.getName());
- String root = fileRoot + "im_history_msg/";
- if (StringUtils.isBlank(root)) {
- uploadReturn.setMessage("上传临时目录没有配置");
- return uploadReturn;
- }
- String staticFloder = "";
- String folder = UploadUtil.getFileFloder();
- String filePath = UploadUtil.getFilePath(root, staticFloder, folder);
- File file = uploadFile(in, filePath, fileName);
- String url = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME,staticFloder + folder, file);
- FileUtils.deleteQuietly(file);
- uploadReturn.setStatus(true);
- uploadReturn.setUrl(url);
- return uploadReturn;
- }
- public void setMaxSize(int maxSize) {
- this.maxSize = maxSize;
- }
- /**
- * 上传文件的工具方法
- * @param in
- * @param path
- * @return
- */
- private File uploadFile(InputStream inputStream, String filePath, String fileName) {
- File file = new File(filePath + "/" + fileName);
- try {
- if (!file.getParentFile().exists()) {
- file.getParentFile().mkdirs();
- }
- FileOutputStream fos = new FileOutputStream(file);
- IOUtils.copy(inputStream, fos);
- if (!file.exists() || file.length() == 0) {
- throw new BizException("图片上传出现错误,请重新上传");
- }
- } catch (IOException e) {
- throw new BizException("图片上传失败", e);
- } finally {
- IOUtils.closeQuietly(inputStream);
- }
- return file;
- }
- }
|