ssm文件上传下载

上传

springMvc.xml配置

<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="defaultEncoding" value="UTF-8" />
		<property name="maxUploadSize" value="1000000000" />
		<property name="uploadTempDir" value="upload" />
		<property name="maxInMemorySize" value="1000000000" />
	</bean>

项目中使用Layui的文件上传功能

	//上传文件uploadapk
	@RequestMapping("/uploadapk")
	@ResponseBody
	public Map uploadapk(HttpSession session, MultipartFile file,HttpServletRequest request) {
		 Map<String,Object> result = new HashMap<String, Object>();
	     //获取要上传的目标文件夹绝对路径、webapp下
	      ServletContext context = session.getServletContext();
	      String realPath = context.getRealPath("/upload/apk");		
	      //重新定义文件名、避免名称重复
	      //String fileName = UUID.randomUUID().toString().replace("-", "").substring(0, 15) + "_file_" + file.getOriginalFilename();
	      try {
	          //上传文件至指定位置
	          file.transferTo(new File(realPath + "/" + file.getOriginalFilename()));
	          result.put("code", 0);
	          result.put("msg", "上传成功");
	          result.put("filePath", file.getOriginalFilename()); 
	      } catch (IOException e) {
	          e.printStackTrace();
	      }
	      return result;
	  }

form表单提交文件和数据
前端

<!-- 美化input的file -->
<style>
    .file {
    position: relative;
    display: inline-block;
    background: #D0EEFF;
    border: 1px solid #99D3F5;
    border-radius: 4px;
    padding: 4px 12px;
    overflow: hidden;
    color: #1E88C7;
    text-decoration: none;
    text-indent: 0;
    line-height: 20px;}.file input {
    position: absolute;
    font-size: 100px;
    right: 0;
    top: 0;
    opacity: 0;}.file:hover {
    background: #AADFFD;
    border-color: #78C3F3;
    color: #004974;
    text-decoration: none;}
    </style>
    
<form id ="formupload" action="" enctype="multipart/form-data" method="post">
<div class="layui-form-item">
    <label class="layui-form-label">描述:</label>
    <div class="layui-input-block">
    <textarea class="layui-textarea" id="describe1" name="describe1" autocomplete="off" /></textarea>
    </div>
  </div>
  <div class="layui-form-item layui-form-text">
    <label class="layui-form-label">上传客户端:</label>
    <div class="layui-input-block">
	<a href="javascript:;" class="file">选择文件    <input type="file" name="file" id="file"></a>				//input  file	 选择文件
    </div>
  </div>
</form>
<!-- js -->
  var formData = new FormData($("#formupload")[0]);
						$.ajax({ 
							url:'<%=request.getContextPath()%>/appset/addvercon'
							,type:'post'
							,data:formData			//必须false才会自动加上正确的Content-Type
							,contentType: false
							,processData: false	   //必须false才会避开jQuery对 formdata 的默认处理,XMLHttpRequest会对 formdata 进行正确的处理
							,success:function(resObj){
								if(resObj==200){
									table.reload('listReload',{
										url:'<%=request.getContextPath()%>/appset/vercon'
										 ,page:{
											 curr:1
										 }
									});
									layer.msg("添加成功",{icon:1});
									window.location.reload();//刷新页面
								}else if(resObj==001){
									layer.msg("文件已存在",{icon:5});
								}else{
									layer.msg("添加失败",{icon:5});
								}
							}

后台

@RequestMapping(value=("/addvercon"),produces="text/html;charset=utf-8")
	@ResponseBody
	public String addvercon (@RequestParam("file")CommonsMultipartFile file,HttpServletRequest request,VerconEntity v){
		try {
			boolean flag=true;
		     String realPath = request.getServletContext().getRealPath("/upload/apk");
		     File files = new File(realPath);										
		     File[] array = files.listFiles();
		     for(int i = 0;i<array.length;i++){
		    	 if(array[i].isFile()){
		    		 if(array[i].getName().equals(file.getOriginalFilename())){
		    			 flag=false;
		    		 }
		    	 }
		     }
		     if(flag){				//文件不存在
		    	 file.transferTo(new File(realPath + "/" + file.getOriginalFilename()));			//保存文件到指定路径
			     v.setApk_src(request.getContextPath()+"\\upload\\apk\\"+file.getOriginalFilename());
			     v.setApkname(file.getOriginalFilename());
			     appSetService.insertvercon(v);																	//添加记录
		     }else{				//文件存在
		    	 return "001";
		     }
		     
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			return "0";
		}
		return "200";
	}

下载

使用简单的浏览器访问文件地址进行下载

 location.href='<%=request.getContextPath()%>/upload/apk/ksj_web_v0.1.6_2019_05_31_1814.apk';   

文件流

 @RequestMapping(value = "/doReqdownload")
    public void fileDown(HttpServletRequest request,HttpServletResponse response ,String path,String fileName){
    	//通过文件名找出文件的所在目录
    	//String path = request.getSession().getServletContext().getRealPath("upload");
    	ServletOutputStream out;
    	//得到要下载的文件
    	File file = new File(path);
    	try {
    		//设置响应头,控制浏览器下载该文件
    		response.setContentType("multipart/form-data");
    		response.addHeader("Content-Disposition", "attachment;filename="+fileName);
    		response.addHeader("Content-Length", "" + file.length());
    		FileInputStream inputStream = new FileInputStream(file);
    		out = response.getOutputStream();
    		int b = 0;
    		byte[] buffer = new byte[1024];
    		while (b != -1) {
    				b = inputStream.read(buffer);
    				//写到输出流(out)中
    				if(b!=-1)
    				out.write(buffer, 0, b);
    		}
    		inputStream.close();
    		out.close();//关闭输出流
    		out.flush();
    	} catch (IOException e) {
    		e.printStackTrace();
    	}
    }

删除

/**
	 * 删除文件
	 * @param path		文件路径
	 * @param filename	删除的文件名
	 * @return
	 */
	public static boolean delfile(String path,String filename){
		 boolean flag=true;
	     File files = new File(path);
	     File[] array = files.listFiles();
	     for(int i = 0;i<array.length;i++){
	    	 if(array[i].isFile()){
	    		 if(array[i].getName().equals(filename)){
	    			 array[i].delete();											//文件存在,删除
	    			 flag=false;
	    		 }
	    	 }
	     }
		return flag;
	}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值