java中MultipartFile互轉(zhuǎn)File的方法
MultipartFile轉(zhuǎn)File
公司業(yè)務遇到需要接收前臺提交過來的圖片或文件(multipart/form-data)類型的(ps:不知道有沒有拼錯嘻嘻)
后臺接收的需要轉(zhuǎn)換為一個File類型的
那么這里涉及到了類型轉(zhuǎn)換的問題:
先列下我的代碼:
@PostMapping("upload") @ResponseBody public void upload(HttpServletResponse response,MultipartFile file)throws IOException{ //MultipartFile file = ((MultipartHttpServletRequest) request).getFile("file"); PrintWriter writer = response.getWriter(); File f = null; if(file.equals("")||file.getSize()<=0){ file = null; }else{ InputStream ins = file.getInputStream(); f=new File(file.getOriginalFilename()); FileUtil.inputStreamToFile(ins, f); } JSONObject jsonObject= weChatMaterialService.getMediaId("image",f); writer.print(jsonObject); writer.flush(); writer.close(); File del = new File(f.toURI()); del.delete(); System.out.println(jsonObject); }
現(xiàn)在來剖析下:就是判斷下我接收的文件是不是空的,如果不是空的就將它轉(zhuǎn)換成為流的形式
后面那個FileUtil就是將流轉(zhuǎn)換成File,最后一步就是因為這樣做法會在項目的根目錄下(好像是根目錄,我也不確定,也是現(xiàn)學現(xiàn)用的嘻嘻)生成一個 文件,這個是我們不需要的對嘛,然后將其刪除就行啦
File f = null; if(file.equals("")||file.getSize()<=0){ file = null; }else{ InputStream ins = file.getInputStream(); f=new File(file.getOriginalFilename()); FileUtil.inputStreamToFile(ins, f); } public class FileUtil { public static void inputStreamToFile(InputStream ins, File file) { try { OutputStream os = new FileOutputStream(file); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } os.close(); ins.close(); } catch (Exception e) { e.printStackTrace(); } } } File del = new File(f.toURI()); del.delete();
File轉(zhuǎn)MultipartFile
添加依賴
<!-- https://mvnrepository.com/artifact/org.springframework/spring-mock --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-mock</artifactId> <version>2.0.8</version> </dependency>
代碼
/** * @param * @return * @author:liuyu * @創(chuàng)建日期:2020年3月5日 * @功能說明:File轉(zhuǎn)MultipartFile */ private static MultipartFile fileToMultipartFile(File file) throws Exception { InputStream inputStream = new FileInputStream(file); MultipartFile multipartFile = new MockMultipartFile(file.getName(), inputStream); return multipartFile; }
PS:file轉(zhuǎn)base64字符串
① java之文件轉(zhuǎn)為base64字符
FileInputStream inputFile = new FileInputStream(f); String base 64=null; byte[] buffer = new byte[(int) f.length()]; inputFile.read(buffer); inputFile.close(); base64=new BASE64Encoder().encode(buffer);
②注意:java中在使用BASE64Enconder().encode(buffer)會出現(xiàn)字符串換行問題,這是因為RFC 822中規(guī)定,每72個字符中加一個換行符號,這樣會造成在使用base64字符串時出現(xiàn)問題,所以我們在使用時要先解決換行的問題
String encoded = base64.replaceAll("[\\s*\t\n\r]", "");
到此這篇關(guān)于java中MultipartFile互轉(zhuǎn)File的方法的文章就介紹到這了,更多相關(guān)java MultipartFile互轉(zhuǎn)File內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Struts2學習教程之自定義類型轉(zhuǎn)換器的方法
類型轉(zhuǎn)換器的作用是將請求中的字符串或字符串數(shù)組參數(shù)與action中的對象進行相互轉(zhuǎn)換。下面這篇文章主要給大家介紹了關(guān)于Struts2學習教程之自定義類型轉(zhuǎn)換器的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2018-05-05springboot yml定義屬性,下文中${} 引用說明
這篇文章主要介紹了springboot yml定義屬性,下文中${} 引用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04Java實現(xiàn)ftp上傳下載、刪除文件及在ftp服務器上傳文件夾的方法
這篇文章主要介紹了Java實現(xiàn)ftp上傳下載、刪除文件及在ftp服務器上傳文件夾的方法,需要的朋友可以參考下2015-11-11