| | |
| | | package cc.mrbird.febs.common.core.utils; |
| | | |
| | | import cc.mrbird.febs.common.core.entity.system.Dic; |
| | | import cc.mrbird.febs.common.core.exception.FebsException; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.io.FileUtil; |
| | | import cn.hutool.core.lang.Dict; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | import cn.hutool.core.io.FileUtil; |
| | | import sun.misc.BASE64Decoder; |
| | | |
| | | import javax.servlet.ServletOutputStream; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.*; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.zip.ZipEntry; |
| | |
| | | |
| | | @Slf4j |
| | | public class MyUtil { |
| | | |
| | | public static void downloadFile(File file, HttpServletResponse response) throws IOException { |
| | | try (InputStream fin = new FileInputStream(file); ServletOutputStream out = response.getOutputStream()) { |
| | | response.setCharacterEncoding("utf-8"); |
| | | response.setContentType("application/x-download"); |
| | | response.addHeader("Content-Disposition", "attachment;filename=resume.doc"); |
| | | |
| | | byte[] buffer = new byte[1024]; |
| | | int bytesToRead = -1; |
| | | // 通过循环将读入的Word文件的内容输出到浏览器中 |
| | | while ((bytesToRead = fin.read(buffer)) != -1) { |
| | | out.write(buffer, 0, bytesToRead); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("下载文件异常" + e); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | public static void download(HttpServletRequest request, HttpServletResponse response, List<File> files , List<String> fileName){ |
| | | //设置压缩包的名字 |
| | |
| | | if (file.getSize() <= 0) { |
| | | throw new FebsException("上传的文件大小需要大于0kb"); |
| | | } |
| | | if (file.getSize() > 50 * 1024* 1024) { |
| | | throw new FebsException("上传的文件大于50M"); |
| | | if (file.getSize() > 200 * 1024* 1024) { |
| | | throw new FebsException("上传的文件大于200M"); |
| | | } |
| | | if (!FileUtil.exist(uploadPpath)) { |
| | | FileUtil.mkdir(uploadPpath); |
| | |
| | | //上传 |
| | | file.transferTo(new File(uploadPpath + newName)); |
| | | return Dict.create().set("fileName",fileName).set("suffix",suffix).set("newName",newName); |
| | | } |
| | | |
| | | /** |
| | | * 对字节数组字符串进行Base64解码并生成图片 |
| | | */ |
| | | public static boolean generateImage(String imgStr,String url) { |
| | | if (imgStr == null) { |
| | | // 图像数据为空 |
| | | return false; |
| | | } |
| | | imgStr = imgStr.split(",")[1]; |
| | | BASE64Decoder decoder = new BASE64Decoder(); |
| | | try { |
| | | // Base64解码 |
| | | byte[] b = decoder.decodeBuffer(imgStr); |
| | | for (int i = 0; i < b.length; ++i) { |
| | | // 调整异常数据 |
| | | if (b[i] < 0) { |
| | | b[i] += 256; |
| | | } |
| | | } |
| | | // 生成jpeg图片 |
| | | String imgFilePath = url; |
| | | OutputStream out = new FileOutputStream(imgFilePath); |
| | | out.write(b); |
| | | out.flush(); |
| | | out.close(); |
| | | return true; |
| | | } catch (Exception e) { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 将base64字符串,生成文件 |
| | | */ |
| | | public static File convertBase64ToFile(String fileBase64String, String filePath, String fileName) { |
| | | |
| | | BufferedOutputStream bos = null; |
| | | FileOutputStream fos = null; |
| | | File file = null; |
| | | try { |
| | | File dir = new File(filePath); |
| | | if (!dir.exists() && dir.isDirectory()) {//判断文件目录是否存在 |
| | | dir.mkdirs(); |
| | | } |
| | | |
| | | BASE64Decoder decoder = new BASE64Decoder(); |
| | | byte[] bfile = decoder.decodeBuffer(fileBase64String); |
| | | |
| | | file = new File(filePath + File.separator + fileName); |
| | | fos = new FileOutputStream(file); |
| | | bos = new BufferedOutputStream(fos); |
| | | bos.write(bfile); |
| | | return file; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return null; |
| | | } finally { |
| | | if (bos != null) { |
| | | try { |
| | | bos.close(); |
| | | } catch (IOException e1) { |
| | | e1.printStackTrace(); |
| | | } |
| | | } |
| | | if (fos != null) { |
| | | try { |
| | | fos.close(); |
| | | } catch (IOException e1) { |
| | | e1.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |