//package com.ycl.utils; // // //import com.github.tobato.fastdfs.domain.fdfs.StorePath; //import com.github.tobato.fastdfs.domain.upload.FastImageFile; //import com.github.tobato.fastdfs.service.FastFileStorageClient; //import com.ycl.dto.media.PictureZoomParameter; //import com.ycl.dto.media.Media; //import net.coobird.thumbnailator.Thumbnails; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Value; //import org.springframework.stereotype.Component; //import org.springframework.util.StringUtils; //import org.springframework.web.multipart.MultipartFile; // //import javax.annotation.PostConstruct; //import java.awt.image.BufferedImage; //import java.io.*; //import java.time.format.DateTimeFormatter; //import java.util.List; //import java.util.regex.Pattern; // //@Component //public class MediaFileUtil { // // // private static MediaFileUtil self; // @Value("${fdfs.groupName}") // private String groupName; // // @PostConstruct // private void init() { // self = this; // } // // // @Autowired // private FastFileStorageClient storageClient; // // // private static final Pattern videoPattern = Pattern.compile("((mp4|flv|avi|rm|rmvb|wmv)(jpg|png|gif|bmp))"); // // @Value("${cfg.res}") // private String rootPath; // // private final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMM"); // // // public MediaFileUtil() throws IOException { // // } // // // public static String uploadImage(InputStream in) throws IOException { // // return self.storageClient.uploadImage(new FastImageFile(in, in.available(), "jpg", null)).getFullPath(); // } // // // public static String uploadImage(File file) throws IOException { // // FileInputStream in = new FileInputStream(file); // return self.storageClient.uploadImage(new FastImageFile(in, in.available(), "jpg", null)).getFullPath(); // } // // // /** // * 判断文件类型 // * // * @param fileName // * @return // */ // public Short getType(String fileName) { // // String ext = fileName.substring(fileName.lastIndexOf(".")).toLowerCase(); // // if (".jpg".equals(ext) || ".jpeg".equals(ext) || ".png".equals(ext) || ".gif".equals(ext) || ".bmp".equals(ext)) { // return 1; // } else if (".mp4".equals(ext) || ".avi".equals(ext) || ".flv".equals(ext) || ".rm".equals(ext) || ".wmv".equals(ext)) { // return 2; // } else { // return 0; // } // } // // public Media save(MultipartFile file, PictureZoomParameter zoomPar) throws Exception { // String[] fs = file.getOriginalFilename().split("\\."); // String ext = fs[fs.length - 1]; // // switch (this.getType(file.getOriginalFilename())) { // case 1: // return this.savePicture(file, ext, zoomPar); // case 2: // return this.saveVideo(file, ext); // default: // return new Media(); // } // } // // public String savePicture(InputStream inputStream, String ext) throws Exception { // StorePath sp = storageClient.uploadFile(groupName, inputStream, inputStream.available(), ext); // return sp.getFullPath(); // } // // public Media savePicture(MultipartFile file, String ext, PictureZoomParameter zoomPar) throws Exception { // // ByteArrayOutputStream outs = new ByteArrayOutputStream(); // Media media = new Media(); // media.setType(ext); // String path = null; // if (zoomPar.getWidth1() != null && zoomPar.getWidth1() > 0) { // path = this.thumbAndStorageOfFile(file, ext, zoomPar.getWidth1()); // media.setUrl1(path); // } // if (zoomPar.getWidth2() != null && zoomPar.getWidth2() > 0) { // path = this.thumbAndStorageOfFile(file, ext, zoomPar.getWidth2()); // media.setUrl2(path); // } // if (zoomPar.getWidth3() != null && zoomPar.getWidth3() > 0) { // path = this.thumbAndStorageOfFile(file, ext, zoomPar.getWidth3()); // media.setUrl3(path); // } // // width4为原图 // path = this.thumbAndStorageOfFile(file, ext, zoomPar.getWidth4()); // media.setUrl4(path); // return media; // } // // /** // * 保存视频文件 // * // * @param file // * @param ext // * @return // * @throws Exception // */ // public Media saveVideo(MultipartFile file, String ext) throws Exception { //// StorePath sp = storageClient.uploadFile(file.getInputStream(), file.getSize(), ext, null); // // StorePath sp = storageClient.uploadFile(groupName, file.getInputStream(), file.getSize(), ext); // Media media = new Media(); // media.setType(ext); // media.setUrl1(sp.getFullPath()); // return media; // } // // /** // * 删除一个文件 // * // * @param rootPath // */ // public void removeFile(String rootPath) { // storageClient.deleteFile(rootPath); // } // // public void removeMedia(Media media) { // if (!StringUtils.isEmpty(media.getUrl1())) { // storageClient.deleteFile(media.getUrl1()); // } // if (!StringUtils.isEmpty(media.getUrl2())) { // storageClient.deleteFile(media.getUrl2()); // } // if (!StringUtils.isEmpty(media.getUrl3())) { // storageClient.deleteFile(media.getUrl3()); // } // if (!StringUtils.isEmpty(media.getUrl4())) { // storageClient.deleteFile(media.getUrl4()); // } // } // // // public void removeMedias(List medias) { // if (medias != null) { // for (Media m : medias) { // if (!StringUtils.isEmpty(m.getUrl1())) { // storageClient.deleteFile(m.getUrl1()); // } // if (!StringUtils.isEmpty(m.getUrl2())) { // storageClient.deleteFile(m.getUrl2()); // } // if (!StringUtils.isEmpty(m.getUrl3())) { // storageClient.deleteFile(m.getUrl3()); // } // if (!StringUtils.isEmpty(m.getUrl4())) { // storageClient.deleteFile(m.getUrl4()); // } // } // } // // } // // /** // * 判断文件是否存在 // * // * @param url // * @return // */ // public Boolean isEmpty(String url) { // return true; // } // // /** // * 缩放并且上传 // * // * @param in // * @param ext // * @param width // * @return // * @throws Exception // */ // private String thumbAndStorage(InputStream in, String ext, Integer width) throws Exception { // // Thumbnails.Builder fileBuilder = Thumbnails.of(in).scale(1.0).outputQuality(1.0); // BufferedImage src = fileBuilder.asBufferedImage(); // // Integer w = src.getWidth(null); // Integer destWidth = width > w ? w : width; // // ByteArrayOutputStream bouts = new ByteArrayOutputStream(); // Thumbnails.of(in).width(destWidth).toOutputStream(bouts); // InputStream ins = this.out2In(bouts); // // StorePath sp = storageClient.uploadFile(groupName, ins, bouts.size(), ext); //// StorePath sp = storageClient.uploadFile(ins, bouts.size(), ext, null); // bouts.close(); // ins.close(); // return sp.getFullPath(); // } // // private String thumbAndStorageOfFile(MultipartFile file, String ext, Integer width) throws Exception { // // Thumbnails.Builder fileBuilder = Thumbnails.of(file.getInputStream()).scale(1.0).outputQuality(1.0); // BufferedImage src = fileBuilder.asBufferedImage(); // // Integer w = src.getWidth(null); // Integer destWidth = width == null || width > w ? w : width; // // ByteArrayOutputStream bouts = new ByteArrayOutputStream(); // Thumbnails.of(file.getInputStream()).width(destWidth).toOutputStream(bouts); // InputStream ins = this.out2In(bouts); // StorePath sp = storageClient.uploadFile(groupName, ins, bouts.size(), ext); //// StorePath sp = storageClient.uploadFile(ins, bouts.size(), ext, null); // bouts.close(); // ins.close(); // return sp.getFullPath(); // } // // // /** // * 输出流转输入流 // * // * @param outs // * @return // * @throws Exception // */ // private InputStream out2In(ByteArrayOutputStream outs) throws Exception { // InputStream ins = new ByteArrayInputStream(outs.toByteArray()); // // return ins; // } // // //}