java中如何通过URL转MultipartFile呢?
/** * URL -> MultipartFile * * @param fileUrl * @param fileName * @return */ public static MultipartFile urlToMultipartFile(String fileUrl, String fileName) { File file = null; MultipartFile multipartFile = null; try { HttpURLConnection httpUrl = (HttpURLConnection) new URL(fileUrl).openConnection(); httpUrl.connect(); file = inputStreamToFile(httpUrl.getInputStream(), fileName); System.out.println(String.format("URL -> file", file)); multipartFile = fileToMultipartFile(file); System.out.println(String.format("file -> MultipartFile", multipartFile)); httpUrl.disconnect(); } catch (Exception e) { e.printStackTrace(); } return multipartFile; } /** * InputStream -> File * * @param ins * @param name * @return * @throws Exception */ public static File inputStreamToFile(InputStream ins, String name) throws Exception { File file = new File(System.getProperty("java.io.tmpdir") + File.separator + name); OutputStream os = new FileOutputStream(file); int bytesRead; int len = 8192; byte[] buffer = new byte[len]; while ((bytesRead = ins.read(buffer, 0, len)) != -1) { os.write(buffer, 0, bytesRead); } os.close(); ins.close(); return file; } /** * File -> MultipartFile * * @param file * @return */ public static MultipartFile fileToMultipartFile(File file) { FileItemFactory factory = new DiskFileItemFactory(16, null); FileItem item = factory.createItem(file.getName(), "text/plain", true, file.getName()); int bytesRead = 0; byte[] buffer = new byte[8192]; try { FileInputStream fis = new FileInputStream(file); OutputStream os = item.getOutputStream(); while ((bytesRead = fis.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } os.close(); fis.close(); } catch (IOException e) { e.printStackTrace(); } return new CommonsMultipartFile(item); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。