1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package com.fdkankan.common.util;
- import org.springframework.web.multipart.MultipartFile;
- import sun.misc.BASE64Decoder;
- import java.io.*;
- import java.util.UUID;
- public class BASE64DecodedMultipartFile implements MultipartFile {
- private final byte[] imgContent;
- private final String header;
- public BASE64DecodedMultipartFile(byte[] imgContent, String header) {
- this.imgContent = imgContent;
- this.header = header.split(";")[0];
- }
- @Override
- public String getName() {
- // TODO - implementation depends on your requirements
- return System.currentTimeMillis() + "-" + UUID.randomUUID().toString().replace("-", "") + "." + header.split("/")[1];
- }
- @Override
- public String getOriginalFilename() {
- // TODO - implementation depends on your requirements
- return System.currentTimeMillis() + "-" + UUID.randomUUID().toString().replace("-", "") + "." + header.split("/")[1];
- }
- @Override
- public String getContentType() {
- // TODO - implementation depends on your requirements
- return header.split(":")[1];
- }
- @Override
- public boolean isEmpty() {
- return imgContent == null || imgContent.length == 0;
- }
- @Override
- public long getSize() {
- return imgContent.length;
- }
- @Override
- public byte[] getBytes() throws IOException {
- return imgContent;
- }
- @Override
- public InputStream getInputStream() throws IOException {
- return new ByteArrayInputStream(imgContent);
- }
- @Override
- public void transferTo(File dest) throws IOException, IllegalStateException {
- try (FileOutputStream ios = new FileOutputStream(dest)){
- ios.write(imgContent);
- }
- }
- public static MultipartFile base64ToMultipart(String base64) {
- try {
- String[] baseStrs = base64.split(",");
- BASE64Decoder decoder = new BASE64Decoder();
- byte[] b = new byte[0];
- b = decoder.decodeBuffer(baseStrs[1]);
- for(int i = 0; i < b.length; ++i) {
- if (b[i] < 0) {
- b[i] += 256;
- }
- }
- return new BASE64DecodedMultipartFile(b, baseStrs[0]);
- } catch (IOException e) {
- e.printStackTrace();
- return null;
- }
- }
- }
|