package org.jeecg.modules.login.Utils; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import org.apache.tomcat.util.http.fileupload.FileItem; import org.apache.tomcat.util.http.fileupload.FileItemFactory; import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory; import org.jeecg.common.util.CommonUtils; import org.jeecg.common.util.oConvertUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.mock.web.MockMultipartFile; import org.springframework.util.FileCopyUtils; import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.*; import java.nio.file.Path; import java.util.HashMap; //生成二维码 public class CreateQRCode { @Value(value = "${jeecg.path.upload}") private String uploadpath; public String createimg(String phone){ int width = 400; //定义图片宽度 int height = 400; //定义图片高度 String format = "png"; //定义图片格式 String content = phone; //定义二维码内容 //定义二维码的参数 HashMap hashMap = new HashMap(); hashMap.put(EncodeHintType.CHARACTER_SET, "utf-8"); //设置编码 hashMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); //设置容错等级,等级越高,容量越小 hashMap.put(EncodeHintType.MARGIN, 2); //设置边距 //生成二维码 try { //生成矩阵 // 内容 格式 宽 高 BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hashMap); BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write( image, "png", baos ); InputStream is = new ByteArrayInputStream(baos.toByteArray()); //转换为MultipartFile MultipartFile multipartFile = new MockMultipartFile("temp.png","temp.png","", is); String ewm = this.uploadLocal(multipartFile, "ewm"); return ewm; } catch (Exception e) { e.printStackTrace(); } return null; } /** * FileItem类对象创建 * * @param inputStream inputStream * @param fileName fileName * @return FileItem */ public FileItem createFileItem(InputStream inputStream, String fileName) { FileItemFactory factory = new DiskFileItemFactory(16, null); String textFieldName = "file"; FileItem item = factory.createItem(textFieldName, MediaType.MULTIPART_FORM_DATA_VALUE, true, fileName); int bytesRead = 0; byte[] buffer = new byte[8192]; OutputStream os = null; //使用输出流输出输入流的字节 try { os = item.getOutputStream(); while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } inputStream.close(); } catch (IOException e) { throw new IllegalArgumentException("文件上传失败"); } finally { if (os != null) { try { os.close(); } catch (IOException e) { } } if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { } } } return item; } private String uploadLocal(MultipartFile mf,String bizPath){ try { String ctxPath = uploadpath; String fileName = null; File file = new File(ctxPath + File.separator + bizPath + File.separator ); if (!file.exists()) { // 创建文件根目录 file.mkdirs(); } // 获取文件名 String orgName = mf.getOriginalFilename(); orgName = CommonUtils.getFileName(orgName); if(orgName.indexOf(".")!=-1){ fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.lastIndexOf(".")); }else{ fileName = orgName+ "_" + System.currentTimeMillis(); } String savePath = file.getPath() + File.separator + fileName; System.out.println("图片路径----------------------"+savePath); File savefile = new File(savePath); FileCopyUtils.copy(mf.getBytes(), savefile); String dbpath = null; if(oConvertUtils.isNotEmpty(bizPath)){ dbpath = bizPath + File.separator + fileName; }else{ dbpath = fileName; } if (dbpath.contains("\\")) { dbpath = dbpath.replace("\\", "/"); } return dbpath; } catch (IOException e) { } return ""; } }
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.1.16.RELEASE</version> </dependency>