import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.io.IOUtils; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartFile; public class FileUtils { // 通过Url将图片转为MultipartFile public static MultipartFile uploadImgUrlToMultipartFile(String url) { byte[] bytes = downloadPicture(url); String name = "imageFile" + url.substring(url.lastIndexOf(".")); MultipartFile multipartFile = getMultipartFile(name, bytes); return multipartFile; } // 获取图片二进制 private static byte[] downloadPicture(String url) { URL urlConnection = null; HttpURLConnection httpURLConnection = null; try { urlConnection = new URL(url); httpURLConnection = (HttpURLConnection) urlConnection.openConnection(); InputStream in = httpURLConnection.getInputStream(); byte[] buffer = new byte[1024]; int len = 0; ByteArrayOutputStream out = new ByteArrayOutputStream(); while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } in.close(); out.close(); return out.toByteArray(); } catch (Exception e) { e.printStackTrace(); } finally { httpURLConnection.disconnect(); } return null; } // 二进制文件转换MultipartFile public static MultipartFile getMultipartFile(String name, byte[] bytes) { MultipartFile mfile = null; ByteArrayInputStream in = null; try { in = new ByteArrayInputStream(bytes); FileItemFactory factory = new DiskFileItemFactory(16, null); FileItem fileItem = factory.createItem("mainFile", "text/plain", false, name); IOUtils.copy(new ByteArrayInputStream(bytes), fileItem.getOutputStream()); mfile = new CommonsMultipartFile(fileItem); in.close(); } catch (Exception e) { e.printStackTrace(); return null; } return mfile; } }