java web上传文件和下载文件代码片段分享
本文实例为大家分享了javaweb上传文件和下载文件的具体代码,供大家参考,具体内容如下
/** *Purpose:上传文档 * *@paramreq *@paramfileTitle *@paramfileType *@paramfileDesc *@return */ @RequestMapping("upload") publicModelAndViewupload(HttpServletRequestreq,StringfileType,StringfileDesc,Stringshare){ UserAllInfouserAll=(UserAllInfo)req.getSession().getAttribute("userAll"); ModelAndViewmav=newModelAndView(); //获取文件的大小 StringfileSize=""; intlength=req.getContentLength(); //转换成KB doublelen1=(double)(Math.round((length/1024)*100))/100; //转换成MB doublelen2=(double)(Math.round((len1/1024)*100))/100; if(len2>1){ fileSize=String.valueOf(len2)+"MB"; }else{ fileSize=String.valueOf(len1)+"KB"; } //将请求转换成处理文件的请求 MultipartRequestmreq=(MultipartRequest)req; //文件上传专用类 MultipartFilemfile=mreq.getFile("uploadFile"); //得到上下文路径 Stringroot=req.getSession().getServletContext().getRealPath("/"); Filedir=newFile(root); //获取文件名和文件的mime类型 Stringstr=mfile.getOriginalFilename(); String[]st=str.split("\\."); FilesavedFile=null; try{ //在指定目录中创建一个新的空文件,文件名称加前缀"upload_" savedFile=File.createTempFile("upload_",mfile.getOriginalFilename(),dir); //将缓冲区的内容复制到新创建的文件中 FileCopyUtils.copy(mfile.getInputStream(),newFileOutputStream(savedFile)); }catch(Exceptione){ e.printStackTrace(); } Stringpath=savedFile.getPath(); //将文件的信息封装在对象中 FileInfofile=newFileInfo(); if(userAll!=null){ file.setUploadPersonId(userAll.getUser().getUserId()); }else{ mav.setViewName("login"); returnmav; } file.setFileName(st[0]); file.setFilePath(path); Datedate=newDate(); file.setUploadDate(date); file.setFileSize(fileSize); file.setFileType(fileType); file.setFileForm(st[1]); if("superman".equals(userAll.getUser().getUserNumber())){ file.setFileShare("Y"); file.setCheckFlag("Y"); }else{ file.setFileShare(share); file.setCheckFlag("N"); } file.setDeleteFlag("N"); file.setDownloadTimes(0); //保存文件的信息 booleanbool=fileSer.saveFile(file); StringuserNumber=userAll.getUser().getUserNumber(); //设置跳转界面 mav.setViewName("jsp/person/upload"); logSer.saveLog("用户\""+userNumber+"\"上传文件\""+file.getFileName()+"\""); mav.getModel().put("bool",bool); returnmav; } /** *Purpose:下载文档 * *@paramfileId文件id *@return */ @RequestMapping("download") publicvoiddownload(IntegerfileId,HttpServletResponseresp){ FileInfofile=newFileInfo(); //通过文件id获取文件的基本信息 file=fileSer.getFileById(fileId); //根据文件后缀名设置文件的mime类型 Stringmime="application/"; switch(file.getFileForm()){ case"doc": mime=mime+"msword"; break; case"docx": mime=mime+"msword"; break; case"pdf": mime=mime+"pdf"; break; case"xls": mime=mime+"vnd.ms-excel"; case"ppt": mime=mime+"vnd.ms-powerpoint"; break; case"txt": mime="text/plain"; break; default: break; } resp.setContentType(mime); StringfileName=file.getFileName(); Stringname=""; try{ //将文件名使用utf-8编码格式编码,使其中的中文字符可以正常显示 name=URLEncoder.encode(fileName,"utf-8"); }catch(UnsupportedEncodingExceptione1){ e1.printStackTrace(); } //弹框选择保存路径 resp.setHeader("content-disposition","attachment;filename="+name+"."+file.getFileForm() +";filename*=utf-8''"+name+"."+file.getFileForm()); StringfilePath=file.getFilePath(); InputStreamis=null; OutputStreamos=null; try{ is=newBufferedInputStream(newFileInputStream(filePath)); os=newBufferedOutputStream(resp.getOutputStream()); byte[]buff=newbyte[1024]; @SuppressWarnings("unused") intcount; while((count=is.read(buff))!=-1){ os.write(buff); } //修改下载次数 fileSer.update(fileId); }catch(Exceptione){ e.printStackTrace(); }finally{ //最后,要记得关闭输入流和输出流 if(is!=null){ try{ is.close(); }catch(IOExceptione){ e.printStackTrace(); } } if(os!=null){ try{ os.close(); }catch(IOExceptione){ e.printStackTrace(); } } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。