文件上传和下载总结
- 格式:docx
- 大小:21.58 KB
- 文档页数:6
文件上传和下载总结文件上传和下载:在java中文件的上传主要有fileupload.jar,cos,mulitpartRequestFile这个控件实现文件上传到服务器。
其实简单的原理就是先上传的项目中,然后上传到服务器上面去。
COS文件的上传首先页面:File.jsp<html><head><title>文件上传</title><link href="css/style.css" rel="stylesheet" type="text/css"> <script src="js/icommon.js"></script><%String path =request.getParameter("path")==null?"":request.getParameter("path"); String filename = "";if(path!=""){filename = path.substring(path.indexOf("/")+1,path.indexOf(".")); }%><script type="text/javascript">function check(){var fileName=document.getElementById("files").value;}</script></head><body><div class="page_title">PDC系统 >上传附件</div><div class="button_bar"><button class="common_button" onclick="alert('欢迎使用')">帮助</button><button class="common_button"onclick="javascript:history.go(-1);">返回</button><input type="reset" value="取消" class="common_button"> </div><form name="form1" method="post" enctype="multipart/form-data"action="upload.jsp"><p><input id="files" name="files" type="file"><input type="submit" name="Submit" value="上传文件"></p></form >Upload.jsp<%@page import="java.io.*"%><%@page import="java.util.*"%><%@page import="com.oreilly.servlet.MultipartRequest"%><%@page contentType="text/html; charset=gb2312" %><%//文件上传后,保存在\\gf_s\\uploadString s1=new File(new File(newFile(application.getRealPath(request.getRequestURI())).getParent()).g etParent()).getParent();String saveDirectory =s1+"\\UploadDemo\\upload";//每个文件最大5m,最多3个文件,所以...int maxPostSize =1 * 5 * 1024 * 1024 ;//response的编码为"gb2312",同时采用缺省的文件名冲突解决策略,实现上传MultipartRequest multi =new MultipartRequest(request, saveDirectory, maxPostSize,"gb2312");//输出反馈信息Enumeration files = multi.getFileNames();while (files.hasMoreElements()) {System.err.println("上传成功");String name = (String)files.nextElement();File f = multi.getFile(name);if(f==null){response.sendRedirect("do.jsp");break;}else{request.getSession().setAttribute("fileName",f.getPath());String fileName = multi.getFilesystemName(name);String lastFileName= "upload/" + fileName;out.println("上传的文件:"+lastFileName);out.println("<hr>");out.println("上传的文件:"+lastFileName);out.println("<script Language=Javascript>alert('上传成功!');</script>");response.sendRedirect("feedback.html?question=updateFile");}}%><meta http-equiv="Content-Type" content="text/html; charset=gb2312">下载:页面:<table class="data_list_table"><tr><th>编号</th><th align="left">附件名</th><th align="left">提交时间</th><th align="left">操作</th></tr><logic:notEmpty name="fileList"><logic:iterate id="reports" name="fileList"><tr><td align="left">${reports.rtManagerId }</td><td align="left">${reports.rtName }</td><td align="left">${reports.rtCreatTime }</td><td width="30%" style="background-color:#eeeeff;"><ahref="feedback.html?question=todown&id=${reports.rtManagerId }">下载</a></td></tr></logic:iterate></logic:notEmpty><logic:empty name="fileList"><tr><td colspan="7" align="center">没有记录</td></tr></logic:empty></table>Action :public ActionForward todown(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException{request.setCharacterEncoding("GB2312");int id=0;try{id=Integer.parseInt(request.getParameter("id"));}catch(Exception e){}ReportManager fb=reportManagerBiz.getReportManagerByID(id);Feedback feedback=this.feedbackBiz.getOne(fb.getFeedbackId());String filename=fb.getRtName();if(request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0)filename = new String(filename.getBytes("GB2312"),"ISO8859-1");// firefox浏览器else if(request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) filename = URLEncoder.encode(filename, "UTF-8");// IE浏览器response.reset();// 如果有换行,对于文本文件没有什么问题,但是对于其它格response.setContentType("application/x-msdownload;charset=GBK");System.out.print(response.getContentType());response.setCharacterEncoding("UTF-8");//乱码问题response.setHeader("Content-Disposition", "attachment;filename=" +new String(filename.getBytes("UTF-8"),"GBK"));// response.setContentType("application/octet-stream");// response.setHeader("Content-Disposition","attachment;filename=\""// + filename + "\"");// response.setHeader("Connection", "close");ServletOutputStream sos = response.getOutputStream();FileInputStream fis = null;File d = new File("D:/"+feedback.getId()+"/"+fb.getRtName()); // File d=new File(fb.getRtPath());try{if (d.exists()){//路径fis = newFileInputStream("D:/"+feedback.getId()+"/"+fb.getRtName());// fis = new FileInputStream(fb.getRtPath());byte b[] = new byte[1000];int j;//读取while ((j = fis.read(b)) != -1){try{//写入sos.write(b, 0, j);}catch (IOException exp) {}}}fis.close();sos.flush();sos.close();}catch (Exception e) {String mailOK="下载失败";request.getSession().setAttribute("mailOK", mailOK);}return null;}。