上传文件(可用ajaxfileupload.js插件)

本文介绍了一种前后端结合的文件上传方案,通过前端JavaScript实现文件格式与大小的初步筛选,而后端采用Java处理上传文件的具体逻辑,包括格式验证、大小限制及文件保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为浏览器之间有差异,考虑到兼容性,选择在后台进行文件的格式判断,文件大小约束,比较好的一个方案前台代码

function ajaxFileUpload(){
		alert("hi");
			var filepath = $("input[<span style="background-color: rgb(51, 51, 255);">name</span>='file']").val();
	        var extStart = filepath.lastIndexOf(".");
	        var ext = filepath.substring(extStart, filepath.length).toUpperCase();
	       	
		    $.ajaxFileUpload(
		        {
			     url:'<%=request.getContextPath() %>/inSer/scwtUpload',            //需要链接到服务器地址
			     secureuri:false,
			     file<span style="background-color: rgb(51, 51, 255);">ElementId</span>:'file',                        //文件选择框的id属性
			     dataType: 'json',                                     //服务器返回的格式,可以是json
			     success: function (data, status)            //相当于java中try语句块的用法
			     {      
			         alert(data.responseText);
			     },
			     error: function (data, status, e)            //相当于java中catch语句块的用法
			     {
			    	 alert(data.responseText);
			     }
			     
		 		}
		        
		   );
		}
后台代码:

@RequestMapping(value="/scwtUpload",method=RequestMethod.POST)
	@ResponseBody
	public void scwtUpload(@RequestParam("file") CommonsMultipartFile file,HttpServletRequest request,HttpServletResponse response) throws IOException, JSONException{ 

		String result = "上传成功";
		boolean flag = true ;
		long size = file.getSize();
		String fieldName = file.getFileItem().getName();
		int index = fieldName.indexOf(".");
		String extension = fieldName.substring(index+1).toUpperCase();
		if(!extension.equals("DOC")){
			result = "只允许上传DOC格式文件";
			flag = false;
		}
        
        if(size>10485760){
        	result = "文件大小超过10M,请重新上传文件";
        	flag = false;
        }

        	FileOutputStream os = null;
        	InputStream in = null;
	        if(flag){
	        	try{
	        		Date date = new Date();
	        		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	        		String time = sdf.format(date).replaceAll("-", "").replaceAll(":", "").replaceAll(" ", "");
	        		String path = request.getSession().getServletContext().getRealPath("/")+time+file.getOriginalFilename();
		            os = new FileOutputStream(path);  
		            in = file.getInputStream();  
		            int b=0;  
		            while((b=in.read())!=-1){  
		                os.write(b);  
		            }  
		            os.flush();  
	        	}finally{
	        		os.close();  
	 	            in.close();
	        	}
	        	
	             
	        	
	        }
        	
        response.setContentType("text/html;charset=UTF-8"); 
        response.getWriter().write(result);

	}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值