java文件上傳下載代碼實例
更新時間:2019年03月18日 14:41:29 作者:弓長張&木子李
這篇文章主要介紹了java文件上傳下載,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
本文實例為大家分享了java文件上傳下載的具體代碼,供大家參考,具體內(nèi)容如下
文件上傳
@RequestMapping(value="/uploadFile",method=RequestMethod.POST) public ResultObject uploadFiles(@RequestParam("file")MultipartFile file,HttpServletRequest request){ ResultObject rs = null;//返回上傳完成信息 String uploadDir = "files";//上傳目錄,文件保存在webapp下的files文件中 if(!file.isEmpty()) { //可以對user做一些操作如存入數(shù)據(jù)庫 //以下的代碼是將文件file重新命名并存入Tomcat的webapp目錄下項目的下級目錄 String fileRealName = file.getOriginalFilename(); //獲得原始文件名; /*int pointIndex = fileRealName.indexOf("."); //點號的位置 String fileSuffix = fileRealName.substring(pointIndex); //截取文件后綴 UUID FileId = UUID.randomUUID(); //生成文件的前綴包含連字符 String savedFileName = FileId.toString().replace("-", "").concat(fileSuffix); //文件存取名 */ String savedDir = request.getSession().getServletContext().getRealPath(uploadDir); //獲取服務(wù)器指定文件存取路徑 File savedFile = new File(savedDir, fileRealName); boolean isCreateSuccess; try { isCreateSuccess = savedFile.createNewFile(); if (isCreateSuccess) { file.transferTo(savedFile); //轉(zhuǎn)存文件 rs = ResultObject.getSuccessResult("上傳文件成功"); Long size = file.getSize();//獲取文件大小 rs.setData(uploadDir+fileRealName); }else{ rs = ResultObject.getFailResult("請修改文件名,重新上傳"); } } catch (IOException e) { e.printStackTrace(); } }else{ rs = ResultObject.getFailResult("文件不能為空"); } return rs; }
文件下載
@RequestMapping(value = "/filterPermission/appDownLoad", method = RequestMethod.GET) public void appDownLoad(HttpServletRequest request, HttpServletResponse response) { //url是上面文件上傳的url download(url,request,response); }
public String download(String filePath, HttpServletRequest request, HttpServletResponse response) { BufferedInputStream bis = null; BufferedOutputStream bos = null; try { //獲取文件名 String fileName = filePath.substring(filePath.lastIndexOf("/")+1); response.setCharacterEncoding("utf-8"); response.setContentType("application/octet-stream"); //response.setContentType("application/force-download"); //處理下載彈出框名字的編碼問題 response.setHeader("Content-Disposition", "attachment;fileName=" + new String( fileName.getBytes("gb2312"), "ISO8859-1" )); //獲取文件的下載路徑 String path = request.getSession().getServletContext().getRealPath(filePath); //利用輸入輸出流對文件進(jìn)行下載 InputStream inputStream = new FileInputStream(new File(path)); //設(shè)置文件大小 response.setHeader("Content-Length", String.valueOf(inputStream.available())); bis = new BufferedInputStream(inputStream);//構(gòu)造讀取流 bos = new BufferedOutputStream(response.getOutputStream());//構(gòu)造輸出流 byte[] buff = new byte[1024]; int bytesRead; //每次讀取緩存大小的流,寫到輸出流 while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } response.flushBuffer();//將所有的讀取的流返回給客戶端 } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try{ if(null != bis){ bis.close(); } if(null != bos){ bos.close(); } }catch(IOException e){ System.out.println("下載文件失敗,"+"文件路徑:"+filePath+e); logger.error("文件下載失敗!", e); } } // 返回值要注意,要不然就出現(xiàn)下面這句錯誤! //java+getOutputStream() has already been called for this response return null; }
以上所述是小編給大家介紹的java文件上傳下載詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
mybatis插入數(shù)據(jù)后返回自增主鍵ID的兩種實現(xiàn)方式
這篇文章主要介紹了mybatis插入數(shù)據(jù)后返回自增主鍵ID的兩種實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05Java編程Socket實現(xiàn)多個客戶端連接同一個服務(wù)端代碼
這篇文章主要介紹了Java編程Socket實現(xiàn)多個客戶端連接同一個服務(wù)端代碼,具有一定參考價值,需要的朋友可以了解下。2017-11-11hibernate一對多關(guān)聯(lián)映射學(xué)習(xí)小結(jié)
這篇文章主要介紹了hibernate一對多關(guān)聯(lián)映射學(xué)習(xí)小結(jié),需要的朋友可以參考下2017-09-09使用java.util.Timer實現(xiàn)任務(wù)調(diào)度
這篇文章主要為大家詳細(xì)介紹了使用java.util.Timer實現(xiàn)任務(wù)調(diào)度,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03Java實現(xiàn)圖片翻轉(zhuǎn)以及任意角度旋轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)圖片翻轉(zhuǎn)以及任意角度旋轉(zhuǎn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01