Spring3.0.5MVC + ajaxfileupload无刷新文件上传


系统版本:spring3.0.5MVC+Hibernate3。


springmvc框架,不用肖说是当下最流行的java web开发框架。并在网上看到很多有在页面不刷新的情况下,进行文件上传的需求,于是本着无事找事的态度,特地去做了一遍这种需求实现。

本屌再次声明:本测试可行,百试百爽,童嫂无欺。至于您在测试过程中出了错,那您就得跪下好好思考下,你曾经犯下什么孽障了。

好了,废话不多说,程序猿是讲究干实事的家伙,实干,巧干,再加上懒干。


那就先从前端的页面说起,毕竟客户的第一眼是看你前端页面。以下是前端页面代码:

<input type="file" name="file" id="busiAttachment" style="BORDER: #91c0e3 1px solid; width:77%;HEIGHT: auto; BACKGROUND-COLOR: #FFFFFF;color: #004779;"/> 
									<input type="button" value="上传"  onclick="upload()"/>
这里要注意了,type,name这两个属性是不能改动的,至于id你可以随便改,不过要和下面的JS代码想对应。

并且我这里上传利用的是ajaxfileupload.js上传,在页面中当然必须引入ajaxfileupload.js和jQuery.js了,如下:

		<script language="javascript" src="${pageContext.request.contextPath }/resource/js/jquery.min.js"></script>
		<script language="javascript" src="${pageContext.request.contextPath }/resource/js/ajaxfileupload.js"></script>


JS代码,如下:

//ajaxFileupload 上传文件
function upload(){  
    var fileName = $(this).val();  
     $.ajaxFileUpload({  
            url:'upload.bia',  
            secureuri:false,  
            fileElementId:'busiAttachment',   
            success:function(data){  
                  
            }  
        });  
}
fileElementId的值问题:这个就的跟上面的id相对应了,这地方注意。


说完了前端页面和JS,那下面就来说说后台处理。

在springmvc中,为了支持文件上面,就必须在spring配置文件当中加入如下配置:

 <!-- SpringMVC上传文件时,需配置MultipartResolver处理器 -->                
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"  
    p:defaultEncoding="UTF-8"/>
我这里紧紧是配置了文件上传的支持,至于其中的一些文件大小之类的参数,可查询再进行配置。


下面就到了最关键的地方了,在controller中进行处理。

如下是controller代码块:

//上传文件
	@RequestMapping(value="project/upload")
	@ResponseBody 
	public String upload(MultipartHttpServletRequest multipartRequest,HttpServletResponse response) throws FileUploadException, IOException{
		
        DefaultMultipartHttpServletRequest defaultRequest = (DefaultMultipartHttpServletRequest)multipartRequest;  
        MultiValueMap<String, MultipartFile> fileMap =  defaultRequest.getMultiFileMap();
        //得到上传文件
        List<MultipartFile> fileList = fileMap.get("file");  
        MultipartFile file = fileList.get(0);       
        //上传后文件的所在目录
        String dirPath = multipartRequest.getSession().getServletContext().getRealPath("/doc");
        File dir = new File(dirPath);
        //判断文件是否存在,不存在新建
        if(!dir.exists()){  
            dir.mkdir();  
        }  
        String filePath = dirPath+"/"+(new Date().getTime())+file.getOriginalFilename();  
        File resultFile = inputstreamtofile(file.getInputStream(),filePath);  
        System.out.println(resultFile.getPath());
//        Customer customer=new Customer();
//        customer.setCustomer_descr("THE WALKING DEAD");
//        List<Customer> customerList = null;
//        customerList.add(customer);
        return "";  
    }

以下是inputstreamtofile方法代码块:

public File inputstreamtofile(InputStream ins,String fileName) {  
        File file = new File(fileName);  
        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();  
        }  
        return file;  
    }


好了,到此就结束了SpringMVC + ajaxfileupload无刷新文件上传,是不是很简单呢。


希望此文对您有所帮助。


你可能感兴趣的:(文件上传,springMVC,ajaxFileUpload)