From 06f59ebb282ab74565585f77dde772d228d6075a Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期二, 18 六月 2024 14:13:10 +0800 Subject: [PATCH] 修改bug --- ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/util/CreateQrCode.java | 78 +++++++++++++++++++++++++++++++++++---- 1 files changed, 70 insertions(+), 8 deletions(-) diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/util/CreateQrCode.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/util/CreateQrCode.java index 6ba60d0..b6329af 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/util/CreateQrCode.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/util/CreateQrCode.java @@ -5,18 +5,23 @@ import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; -import com.ruoyi.system.api.util.HuaWeiOBSUtil; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.util.Base64; import java.util.HashMap; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileItemFactory; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; +import org.springframework.http.MediaType; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartFile; public class CreateQrCode { private static final String base64Url = "data:image/png;base64,"; - /** * 创建二维码 * @@ -48,7 +53,8 @@ * @throws IOException * @throws WriterException */ - public static String createQRCodeToObs(String json) throws IOException, WriterException { + public static MultipartFile createQRCodeStream(String json) + throws IOException, WriterException { QRCodeWriter qrCodeWriter = new QRCodeWriter(); HashMap<EncodeHintType, Object> hints = new HashMap<>(); @@ -56,13 +62,69 @@ BitMatrix bitMatrix = qrCodeWriter.encode(json, BarcodeFormat.QR_CODE, 600, 600, hints); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); MatrixToImageWriter.writeToStream(bitMatrix, "PNG", outputStream); - InputStream is = new ByteArrayInputStream( + InputStream byteArrayInputStream = new ByteArrayInputStream( outputStream.toByteArray()); - return HuaWeiOBSUtil.obsUploadStream(json, is); + // byteArrayInputStream 转MultipartFile + + return getMultipartFile(byteArrayInputStream, json + ".png"); } - public static void main(String[] args) throws IOException, WriterException { - String qrCodeToObs = createQRCodeToObs("123456"); - System.out.println(qrCodeToObs); + /** + * 获取封装得MultipartFile + * + * @param inputStream inputStream + * @param fileName fileName + * @return MultipartFile + */ + public static MultipartFile getMultipartFile(InputStream inputStream, String fileName) { + FileItem fileItem = createFileItem(inputStream, fileName); + // CommonsMultipartFile是feign对multipartFile的封装,但是要FileItem类对象 + return new CommonsMultipartFile(fileItem); + } + + + /** + * FileItem类对象创建 + * + * @param inputStream inputStream + * @param fileName fileName + * @return FileItem + */ + public static 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[10 * 1024 * 1024]; + 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 RuntimeException(e); + } finally { + if (os != null) { + try { + os.close(); + } catch (IOException e) { + throw new RuntimeException(e); + + } + } + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + + return item; } } \ No newline at end of file -- Gitblit v1.7.1