| | |
| | | import cn.hutool.core.lang.Dict; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | import sun.misc.BASE64Decoder; |
| | | |
| | | import javax.servlet.ServletOutputStream; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | |
| | | 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); |
| | |
| | | //原本名字 |
| | | String fileName = file.getOriginalFilename(); |
| | | String suffix = ""; |
| | | if (fileName.indexOf(".") > 0) { |
| | | if (fileName.lastIndexOf(".") > 0) { |
| | | //后缀 |
| | | suffix = fileName.substring(fileName.indexOf("."), fileName.length()); |
| | | suffix = fileName.substring(fileName.lastIndexOf(".")); |
| | | } |
| | | //生成新的名字 |
| | | String newName = nextIdStr + suffix; |
| | | //上传 |
| | | 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(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |