zoukankan      html  css  js  c++  java
  • jquery+java文件上传下载删除全代码

    页面

    <p class="text_essas">
    	<span>附件:</span>
    	<input type="file" name="file" id="file" class="inp_file" style="display:none" />
    	<#-- 文件名称保存到此标签 -->
    	<input type="hidden" id="fileinput" class="fileinput" name="fileinput" value="" />
    	<span id="yl_setfile" class="option_up"><font id="filename" onclick="setfile()" class="l_imgname" title="">添加附件+</font>附件大小不能超过1000.00MB</span>
    </p>
    

    js 上传文件

    //<#-- 触发文件上传 -->
    function setfile(){
        $("#file").click();
    }
    
    //冒泡提示
    function layertips(msg,obj){
    	layer.tips(msg, obj, {
    	    tipsMore: true
    	});
    }
    
    //清空file
    function delfile(file){
    	file.after(file.clone().val(""));   
    	file.remove();
    }
    
    //<#-- 文件发生改变change方法 -->
    $(document).ready(function(){
    	$("#file").live('change', function(){
    		var file = $('#'+this.id)
    		var fileName = file.val().split('\'); //得到文件名数组
    	    var fileSize =  document.getElementById('file').files[0]; //获得文件大小;
    	    filePath = file.val().toLowerCase().split(".");
    	    fileType =  filePath[filePath.length - 1]; //获得文件结尾的类型如 zip rar
    	    if(!(fileType == "png" || fileType == "jpg")){
    	    	//layer的冒泡提示
    	        layertips('附件格式不符合要求!',$("#filename"))
    	        //清空file
    	        delfile(file);
    	    }else if(fileSize.size>1048576000){
    	        layertips('错误!请上传不超过1000.00MB的附件',$("#filename"))
    	        delfile(file);
    	    }else{
    	    	//文件名回显到页面
    			//$("#filename").attr("title",file.val().substring(file.val().lastIndexOf("\")+1))
    			//$("#filename").html(file.val().substring(file.val().lastIndexOf("\")+1));
    	    	uploadFile(file,fileType)
    	    }
    	});
    });
    
    
    //<#-- 文件上传 -->
    function uploadFile(file,fileType){
    	var formData = new FormData();
    	var name = file.val().substring(file.val().lastIndexOf("\")+1);
    	//uuid 在其他js文件内 后面会给出
    	var uuid1 = uuid(32, 16);
    	formData.append("file", file[0].files[0]);
    	formData.append("name", name);
    	formData.append("id",uuid1);	   
    	//动态加载上传的文件到页面,,无需刷新页面 				
    	$("#yl_setfile").before('<span class="option_up"><input type="hidden" name="fileuuid" fliename="'+name+'" value="'+uuid1+'"><font "delfile('+"'"+uuid1+"'"+',this,'+"'"+fileType+"'"+')" class="l_imgname" title="">删除</font><span class="l_imgname" title="'+name+'" "downloadfile('+"'"+uuid1+"'"+')">'+name+'</span></span><span style="margin-left: 4px;"></span>');
    	//文件是一个一个上传的,保存文件信息到数据库的方法可以批量也可以单条
    	$.ajax({
    		url : get_web_url()+'/api/apply/upload_auditFile.action',
    		type: 'POST',
    		// 告诉jQuery不要去处理发送的数据
    		processData: false,
    		// 告诉jQuery不要去设置Content-Type请求头
    		contentType: false,
    		data : formData,
    		beforeSend: function() {
    			console.log("正在进行,请稍候");
    		},
    		success: function(responseStr) {
    			if($("#id").val()!=''){
    				log($("#id").val())
    				//这里是单条的保存上传文件信息,也可以批量
    				saveoreditfile($("#id").val());
    			}
    			console.log("成功" + responseStr);
    		},
    		error: function(responseStr) {
    			console.log("error");
    		}
    	});
    }
    

    js 保存文件信息

    //<#-- 获取所有上传文件ID,name -->
    //之前动态加载到页面上的文件,不会获取到已经存在的文件,只会获取新上传的文件
    function getfileId(){
        //获取的是已经新上传的文件的全部信息,需要其他信息可以自己添加
    	var djs = [];
    	$("input[name='fileuuid']").each(function(){
    		var id = $(this).val();
    		var name = $(this).attr("fliename");//<#-- .split(".")[0] 纯名字 -->;
    		//这里的name,value和后台的实体类对应
    	 	djs.push({'name' : id,'value' : name});
    	 	log(djs)
    	 });
    	return djs;
    }
    
    //<#-- 保存文件信息 approval:审批ID,可以批量可以单条,看你什么时候调用了。
    //可以每上传一个文件调用一次(单条)、也可以全部上传完毕点击保存按钮调用(批量)-->
    function saveoreditfile(approval){
    	//获取一下页面的关于文件的信息
    	var djs = getfileId();
    	$.ajax({
            type:'post',
            url : get_web_url()+'/api/apply/saveoreditfile.action',
            data : {"djs":JSON.stringify(djs),"approval":approval}, 
            success : function(data){
            	//这里的resultVO 内的方法不用在意 自用的方法
                resultVO.checkCode(data, function (data) {
            		if(data){
            			log(data);
    	        	}else{
            			log("凉凉");
    	        	}
                });
            },
            error : function(){
                layeropen('2','发生意外错误!');
            }
        });
    }
    
    //<#-- 删除文件 id 文件信息ID(数据库表ID)、obj当前删除文件,fileType 文件后缀-->
    function delfile (id,obj,fileType){
    	var conlay = layer.confirm('确定要删除文件吗?', {
    		  btn: ['确定','取消'] //按钮
    		}, function(){
    			$.ajax({
    		        type:'post',
    		        url : get_web_url()+'/api/apply/delfile.action',
    		        data : {"id":id,"fileType":fileType}, 
    		        success : function(data){
    		            resultVO.checkCode(data, function (data) {
    		        		if(data){
    		        			//删除一些页面关联标签,因人而异
    		        			$(obj).parent().next().remove();
    		        			$(obj).parent().remove();
    		        			log(data);
    		        			layer.close(conlay);
    			        	}else{
    		        			log("凉凉");
    			        	}
    		            });
    		        },
    		        error : function(){
    		            layeropen('2','发生意外错误!');
    		        }
    		    });
    		},function(){
    	        
    	  });
    }
    
    //<#-- 文件下载 -->
    function downloadfile(id){
    	log(id);
    	location.href=get_web_url()+'/apply/ResponseEntity.action?id='+id;
    }
    

    java 保存文件信息、删除、下载

    action

    
    	/**
    	 * 上传文件
    	 * @param file 文件流
    	 * @param id 文件随机ID
    	 * @param response
    	 * @throws Exception
    	 */
    	 //这里因为框架内置 不需要加@ResponseBody,正常需要加的
        @RequestMapping("/upload_auditFile")
        public void upload_auditFile(MultipartFile file,String id,HttpServletRequest request,HttpServletResponse response) throws Exception{
        	SysUser sysUser = (SysUser) request.getSession().getAttribute("sysUser");
            String result =  applyService.upload_auditFile(file,id,sysUser.getId());
            JSONObject obj = new JSONObject();
            if(!"error".equals(result)&&!"fileMax".equals(result)){
                obj.put("result", "ok");
            }else{
                obj.put("result", result);
            }
            PrintWriter out = response.getWriter();
            obj.put("fileName", file.getOriginalFilename());
            obj.put("filePath", result);
            response.setStatus(HttpServletResponse.SC_OK);
            response.setContentType("text/html");
            out.print(obj.toString());
        }
        
    	/**
    	 * 保存文件信息
    	 * @param request
    	 * @param djs 文件信息
    	 * @param filestepid 步骤ID
    	 * @param approval 审批流程ID
    	 * @return
    	 */
    	@RequestMapping("/saveoreditfile")
    	public ResultVO saveoreditfile(HttpServletRequest request,String djs,String filestepid, String approval) {
    		SysUser sysUser = (SysUser) request.getSession().getAttribute("sysUser");
    		// html字符转义 import org.apache.commons.text.StringEscapeUtils;
    	    djs = StringEscapeUtils.unescapeHtml4(djs);
    	    List<jsonbean> arrayList = (List<jsonbean>) JSON.parseArray(djs, jsonbean.class);
    	    System.out.println(arrayList);
        	return new ResultVO(applyService.saveoreditfile(arrayList, filestepid, approval,sysUser));
    	}
    	/**
    	 * JSON转换实体类
    	 * @author XNYLH
    	 *
    	 */
    	public class jsonbean {
    		private String name;
    	    private String value;
    		public String getName() {
    			return name;
    		}
    		public void setName(String name) {
    			this.name = name;
    		}
    		public String getValue() {
    			return value;
    		}
    		public void setValue(String value) {
    			this.value = value;
    		}
    		@Override
    		public String toString() {
    			return "jsonbean [name=" + name + ", value=" + value + "]";
    		}
    	}
    	/**
    	 * 删除文件
    	 * @param request
    	 * @param djs
    	 * @param filestepid
    	 * @param approval
    	 * @return
    	 */
    	@RequestMapping("/delfile")
    	public ResultVO delfile(HttpServletRequest request,String id,String fileType) {
        	return new ResultVO(applyService.delfile(id,fileType));
    	}
    	/**
    	 * 文件下载
    	 * @return
    	 */
    	@RequestMapping("/ResponseEntity")
    	public ResponseEntity<byte[]> ResponseEntity(String id) throws IOException{
    		//获取文件信息
    		OaFlowFile oaFlowFile = applyService.getOaFlowFile(id);
    		System.out.println(id+oaFlowFile);
    		if(oaFlowFile!=null) {
    			//这里就是文件路径
    			String webPath = Platform.getInstance().getGlobal().get("attachPath");
    			String filePath = webPath + oaFlowFile.getFileUrl();
    			String realFileName;
    			File file = new File(filePath);
    			HttpHeaders headers = new HttpHeaders();
    			realFileName = 	new String(oaFlowFile.getFileName().getBytes("ISO-8859-1"),"utf-8");
    			headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    			//realFileName = URLEncoder.encode(realFileName, "UTF-8");
    			headers.setContentDispositionFormData("attachment", realFileName);
    			//import org.springframework.http.ResponseEntity;
    			//import org.springframework.http.HttpHeaders;
    			//import org.springframework.http.HttpStatus;
    			//import org.springframework.http.MediaType;
    			return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),
    			headers, HttpStatus.OK);
    		}
    		return null;
    	}
    
    

    serverImpl

    	//文件上传
    	@Override
    	public String upload_auditFile(MultipartFile file, String id, String userid) throws IOException {
    		String fileName = file.getOriginalFilename();
            String filePath = id + fileName.substring(fileName.lastIndexOf("."), fileName.length());
            String webPath = Platform.getInstance().getGlobal().get("attachPath");
            filePath = File.separator +/*userid*/"apply" + File.separator + filePath;
            String path = webPath + filePath;
            File f = new File(path);
            if (!f.exists()) {
                f.getParentFile().mkdirs();
                f.createNewFile();
            }
            File fileUpload = new File(path);
            file.transferTo(fileUpload);
            return filePath;
    	}
    
    	//保存文件信息
    	@Override
    	public boolean saveoreditfile(final List<jsonbean> arrayList, final String filestepid, final String approval, SysUser sysUser) {
    		//arrayList 获取的总是页面当前新添加的文件,最新的
    		//所以修改即为保存,先删除再重新添加(我就是个小机灵鬼)因为使用批量所以性能不会有问题,很快
    		String sql = "DELETE FROM OA_FLOW_FILE WHERE id = ? ";
    		final String sysuserid = sysUser.getId();
            if(arrayList!=null&&arrayList.size()>0) {
            	jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
        			@Override
        			public void setValues(PreparedStatement ps, int i) throws SQLException {
        				ps.setString(1, arrayList.get(i).getName());
        			}
        			@Override
        			public int getBatchSize() {
        				return arrayList.size();
        			}
        		});
        		String sql1 = "INSERT INTO OA_FLOW_FILE (ID,FILE_URL,FLOW_TABLE_ID,USER_ID,SETP_ID,FILE_NAME) VALUES (?,?,?,?,?,?) ";
        		jdbcTemplate.batchUpdate(sql1, new BatchPreparedStatementSetter() {
        			@Override
        			public void setValues(PreparedStatement ps, int i) throws SQLException {
        				ps.setString(1, arrayList.get(i).getName());
        				ps.setString(2, File.separator +"apply" + File.separator + arrayList.get(i).getName() + arrayList.get(i).getValue().substring(arrayList.get(i).getValue().lastIndexOf("."), arrayList.get(i).getValue().length()));
        				ps.setString(3, approval);
        				ps.setString(4, sysuserid);
        				ps.setString(5, filestepid);
        				ps.setString(6, arrayList.get(i).getValue());
        			}
        			@Override
        			public int getBatchSize() {
        				return arrayList.size();
        			}
        		});
        		return true;
            }
    		return false;
    	}
    
    
    	//删除文件
    	@Override
    	public boolean delfile(String id,String fileType) {
    		String path;
    		String webPath = Platform.getInstance().getGlobal().get("attachPath");
    		//获取文件信息
    		OaFlowFile oaFlowFile = get_oaflow_file(id);
    		if(oaFlowFile!=null) {
    			//如果文件信息是空的,就没有文件路径了
    	        path = webPath + oaFlowFile.getFileUrl();
    		}else {
    			//所以这里拼出路径
    			path = webPath + File.separator +/*userid*/"apply" + File.separator + id + "."+fileType;
    		}
            File file = new File(path);
            if (file.exists() && file.isFile()) {
                if (file.delete()) {
                    System.out.println("删除文件成功!");
                    if(oaFlowFile!=null) {
                    	//没有信息自然不需要清空信息
                    	baseTransaction.deleteById(OaFlowFile.class, id);
                    }
                    return true;
                } else {
                    System.out.println("删除文件失败!");
                    return false;
                }
            } else {
                System.out.println("删除文件失败:不存在!");
                return false;
            }
    	}
    

    好啦!差不多到这啦!QAQ 这里uuid的百度云链接 ~~ 我才不告诉你密码是 smn6 呢!!!

  • 相关阅读:
    遍历二维数组
    冒泡跟扫描共用
    1.8作业
    1.7作业
    1.5作业
    百文百鸡 水仙花数 百马百担
    for循环输出九九乘法表
    循环语句
    1.4作业
    07、找出1-99之间的同构数
  • 原文地址:https://www.cnblogs.com/yu-du-chen/p/12109021.html
Copyright © 2011-2022 走看看