GATEWAY网关上传文件问题
gateway网关上传文件,MultipartFile在接口中无法解析到,所以需要把要上传的文件进行Base64编码,通过json格式传给后台。
解析前端传的Base64数据
1、自定义File类
继承MultipartFile类
import org.springframework.web.multipart.MultipartFile;import java.io.*;/**
* base64 转 MultipartFile
*
* @author PCCW
*/publicclassMyMultipartFileimplementsMultipartFile{privatefinalbyte[] imgContent;privatefinal String header;publicBase64DecodedMultipartFile(byte[] imgContent, String header){this.imgContent= imgContent;this.header= header.split(";")[0];}@Overridepublic StringgetName(){return System.currentTimeMillis()+ Math.random()+"."+ header.split("/")[1];}@Overridepublic StringgetOriginalFilename(){return System.currentTimeMillis()+(int)(Math.random()*10000)+"."+ header.split("/")[1];}@Overridepublic StringgetContentType(){return header.split(":")[1];}@OverridepublicbooleanisEmpty(){return imgContent== null|| imgContent.length==0;}@OverridepubliclonggetSize(){return imgContent.length;}@Overridepublicbyte[]getBytes(){return imgContent;}@Overridepublic InputStreamgetInputStream(){returnnewByteArrayInputStream(imgContent);}@OverridepublicvoidtransferTo(File dest)throws IOException{try(FileOutputStream outputStream=newFileOutputStream(dest)){
outputStream.write(imgContent);}catch(IOException e){
e.printStackTrace();}}}
2、解析Base64数据
解析Base64工具类
import org.springframework.web.multipart.MultipartFile;import sun.misc.BASE64Decoder;import java.io.*;/**
* base64 转 MultipartFile
*
* @author PCCW
*/publicclassMultipartFileUtils{/**
* base64转MultipartFile
* @param base64
* @return
*/publicstatic MultipartFilebase64ToMultipart(String base64){try{
String[] baseStrs= base64.split(",");
BASE64Decoder decoder=newBASE64Decoder();byte[] b;
b= decoder.decodeBuffer(baseStrs[1]);for(int i=0; i< b.length;++i){if(b[i]<0){
b[i]+=256;}}returnnewMyMultipartFile(b, baseStrs[0]);}catch(IOException e){
e.printStackTrace();return null;}}}
参考:https://www.jianshu.com/p/0ee9b1a3b3e0