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();
	}
posted @ 2015-09-10 17:24  小祥工作室  阅读(17709)  评论(1编辑  收藏  举报