|
文件上传与下载在javaWeb开发中还是比较常见的,于是分享下实用案例,感兴趣的朋友可以参考下哈,希望对你有所帮助
文件上传: 复制代码 代码如下: public class UploadServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { SmartUpload myupload = new SmartUpload(); ServletConfig config = getServletConfig(); myupload.initialize(config,req,resp); resp.setContentType("text/html"); resp.setCharacterEncoding("utf-8"); PrintWriter out = resp.getWriter(); out.println("<h2>处理上传的文件</h2>"); out.println("<hr>");
try { myupload.setMaxFileSize(1024*1024); myupload.setTotalMaxFileSize(5*1024*1024);
myupload.setAllowedFilesList("doc,txt,jpg,gif"); myupload.setDeniedFilesList("exe,bat,jsp,htm,html"); myupload.upload();//上传文件,此项是必须的 int count = myupload.getFiles().getCount(); Request myRequest = myupload.getRequest(); String rndFilename,fileExtName,fileName,filePathName; Date dt = null; SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMdd"); //一一提取上传文件信息,同时可保持文件 for(int i = 0; i < count; i++){ File file = myupload.getFiles().getFile(i); if(file.isMissing()) continue; fileName = new String(file.getFileName().getBytes(),"utf-8");//获取文件名 filePathName = new String(file.getFilePathName().getBytes(),"utf-8"); fileExtName = file.getFileExt(); dt = new Date(System.currentTimeMillis()); Thread.sleep(100); rndFilename = fmt.format(dt)+i+"."+fileExtName; out.println("第"+(i+1)+"个文件的文件信息:<br>"); out.println(" 文件名为:"+fileName+"<br>"); out.println(" 文件扩展名为:"+fileExtName+"<br>"); out.println(" 文件全名:"+filePathName+"<br>"); out.println(" 文件大小:"+file.getSize()/1024+"kb<br>"); //创建文件保存位置 ServletContext context = req.getServletContext(); String savePath = context.getRealPath("/upload/"); java.io.File folder = new java.io.File(savePath); if(!folder.exists()){ folder.mkdirs(); } out.println(" 文件保存路径:"+savePath); file.saveAs(savePath+"/"+rndFilename,SmartUpload.SAVE_PHYSICAL); }
} catch (Exception e) { out.println("文件上传失败!!!!"); e.printStackTrace(); } out.flush(); out.close();
} } 复制代码 代码如下: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="com.jspsmart.upload.*" %> <% //设定请求编码方式,否则遇到中文就会乱码 request.setCharacterEncoding("utf-8"); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>上传文件实例</title> <script type="text/javascript" src="js/jquery-1.8.1.js"></script> <script type="text/javascript"> $(function(){ $("#number").change(function(){ var number = $("#number").attr("value"); $("#files").html(""); for(var i = 0; i < number; i++){ $("#files").append("<input type='file' name='file''"+i+"'><br/>"); } }); }); </script> </head> <body> <h2>上传文件实例</h2> 请选择上传文件数量: <select id="number"> <option value="1" selected="selected">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <form action="UploadServlet" method="post" enctype="multipart/form-data"> <div id="files"></div> <input type="submit" value="提交"/> </form> </body> </html> 文件下载: 复制代码 代码如下: <% response.setContentType("application/x-download");//设置为下载application/x-download String filedownload = "/要下载的文件名";//即将下载的文件的相对路径 String filedisplay = "最终要显示给用户的保存文件名";//下载文件时显示的文件保存名称 String filenamedisplay = URLEncoder.encode(filedisplay,"UTF-8"); response.addHeader("Content-Disposition","attachment;filename=" + filedisplay); try { RequestDispatcher dis = application.getRequestDispatcher(filedownload); if(dis!= null) { dis.forward(request,response); } response.flushBuffer(); } catch(Exception e) { e.printStackTrace(); } finally { } %>
|
|