java文件上傳到服務器


最近項目中使用到了文件從本地到服務器的功能。其實是為了解決目前瀏覽器不支持獲取本地文件全路徑。不得已而想到上傳到服務器的固定目錄,從而方便項目獲取文件,進而使程序支持EXCEL批量導入數據。

在前台界面中
<form method="post" enctype="multipart/form-data"  action="../manage/excelImport.do">
請選文件:<input type="file"  name="excelFile">
     <input type="submit" value="導入" onclick="return impExcel();"/>
</form>

action中獲取前台傳來數據並保存
/**
	 * excel 導入文件
	 * @return
	 * @throws IOException 
	 */
	@RequestMapping("/usermanager/excelImport.do")
	public String excelImport(
			String filePath,
			MultipartFile  excelFile,HttpServletRequest request) throws IOException{
		log.info("<<<<<<action:{} Method:{} start>>>>>>","usermanager","excelImport" );
		if (excelFile != null){
			String filename=excelFile.getOriginalFilename(); 
			String a=request.getRealPath("u/cms/www/201509");
			SaveFileFromInputStream(excelFile.getInputStream(),request.getRealPath("u/cms/www/201509"),filename);//保存到服務器的路徑
		}
		log.info("<<<<<<action:{} Method:{} end>>>>>>","usermanager","excelImport" );
		return "";
	}
	
	/**
	 * 將MultipartFile轉化為file並保存到服務器上的某地
	 */
	public void SaveFileFromInputStream(InputStream stream,String path,String savefile) throws IOException
	{       
        FileOutputStream fs=new FileOutputStream( path + "/"+ savefile);
        System.out.println("------------"+path + "/"+ savefile);
        byte[] buffer =new byte[1024*1024];
        int bytesum = 0;
        int byteread = 0;
        while ((byteread=stream.read(buffer))!=-1)
        {
            bytesum+=byteread;
            fs.write(buffer,0,byteread);
            fs.flush();
        } 
        fs.close();
        stream.close();
	}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM