zoukankan      html  css  js  c++  java
  • Servlet上传下载

    下面是一个jsp页面(method和enctype必须要有)

    //页面
    <form action="file?file=upLoadByjs" method="post" enctype="multipart/form-data"> <input type="file" name=file1" /><Br> <input type="file" name=file2" /><Br> <input type="submit" value="上传"> </form>
    enctype="multipart/form-data"会导致request取值取不到:
    su.getRequest().getParameter("btitle");解决取值

    servlet处理程序:

    //新建一个jsmartUpLoad对象
     SmartUpload smartUpload = new SmartUpload();
     //上传初始化
     smartUpload.initialize(this.getServletConfig(),request,response);
     try {
    //设定上传限制
    //限制每个上传文件的最大长度;将最大设定为1024*1024*20,超过大小,后面取文件异常。
    smartUpload.setMaxFileSize(1024*1024*10); 
    //限制总上传数据的长度
    smartUpload.setTotalMaxFileSize(1024*1024*20);
    //限制允许上传的文件类型、允许doc、txt、bat文件
    smartUpload.setAllowedFilesList("doc,txt,bat");
    //限制禁止上传的文件类型,禁止exe、jsp、和没有扩展名的文件
    smartUpload.setDeniedFilesList("exe,jsp,,");
     //上传文件
     smartUpload.upload();
     //将文件保存到指定的目录下,这个是全部上传到一个目录,名字不变save();有第二个参数,默认为SAVE_AUTO path为 /DDD 默认去找项目下面的DDD文件夹,如果没有,则去寻找目录所在盘符的根目录下DDD文件夹,如果都存在,优先第一个。与下面saveAs()一样。
    
     smartUpload.save(path);
     } catch (SQLException e) {
     e.printStackTrace();
     } catch (SmartUploadException e) {
     e.printStackTrace();
     }
     
    
     response.setContentType("text/html;charset=utf-8");
     PrintWriter out = response.getWriter();
     //逐一提取文件信息,同时输出上传文件的信息
     for (int i = 0; i < smartUpload.getFiles().getCount(); i++) {
     com.jspsmart.upload.File myFile =smartUpload.getFiles().getFile(i);
    
    myFile.saveAs(path);
     //若文件表单中的文件选项没有选择文件则继续
     if(myFile.isMissing())
     continue;
     //显示当前文件的信息
     out.println("<table border='1'>");
     out.println("<tr><td>表单选项</td><td>"+myFile.getFieldName()+"</td></tr>");
     out.println("<tr><td>文件长度:</td><td>"+myFile.getSize()+"</td></tr>");
     out.println("<tr><td>文件名</td><td>"+myFile.getFileName()+"</td></tr>");
     out.println("<tr><td>文件扩展名</td><td>"+myFile.getFileExt()+"</td></tr>");
     out.println("<tr><td>文件全名</td><td>"+myFile.getFilePathName()+"</td></tr>");
     out.println("</table><br>");
     }
    
    out.flush();
    
    out.close();

    该程序直接使用SmartUploa对象来实现文件上传。在申请对象后,必须要对其进行初始化:smartUpload.initialize(this.getServletConfig(),request,response);

    使用jspSmartUpload组件进行文件下载:

    <a href="${pageContext.request.contextPath }/file1?file=downByJsmart&name=user.txt">下载user</a>
     //获取下载文件名
     String fileName = request.getParameter("name");
     //新建一个smartUpload对象
     SmartUpload smartUpload = new SmartUpload();
     //初始化
     smartUpload.initialize(this.getServletConfig(), request, response);
     //设定contentDisposition为null以禁止浏览器自动打开文件
     //保证单击链接后是下载文件。
     smartUpload.setContentDisposition(null);
     //下载文件
     try {
     smartUpload.downloadFile("D:/work space/JSP workspace/jsp_servlet_upAndLoad/file/upLoad/"+fileName);
     } catch (SmartUploadException e) {
     e.printStackTrace();
     }

    如果用的原生jsp:

    //下载
    SmartUpload smart=new SmartUpload();
    smart.initialize(config, request, response);
    smart.setContentDisposition(null); 
    smart.downloadFile(sDocPath);
    out.clear();
    out = pageContext.pushBody();
    //上传
    SmartUpload smart=new SmartUpload();
    smart.initialize(pageContext);   
    smart.upload(); 
    com.jspsmart.upload.File myFile = smart.getFiles().getFile(0);
    myFile.saveAs(filename);
  • 相关阅读:
    struts的action直接输出中文备注【原创】
    iframe高度处理【原创】
    Gel备注【原创】
    关于用jsp生成xml的问题【原创】
    网上流行的flash切换图片之研究【原创】
    c#连mysql的latin1编码乱码问题
    windows phone 7图片搜索小工具(源码)
    家猫js类库
    理解c#中的readonly,const与enum枚举
    Silverlight 雷达图和一种特殊泡泡画法
  • 原文地址:https://www.cnblogs.com/lifusen/p/7278883.html
Copyright © 2011-2022 走看看