下面是一个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);