本文实例为大家分享了java实现文件上传下载的具体代码,供大家参考,具体内容如下
<强>一。上传强>
1。前端:
& lt;形式方法=皃ost”action="类" enctype=岸嗖糠?格式”比; & lt;输入类型="文件" name="还是"/比; & lt; br/比; & lt;输入类型="提交" value=" https://www.yisu.com/zixun/上传”/比; & lt;/form>
2。后台:
进口java.io.File; 进口java.io.IOException; 进口java.io.PrintWriter; 进口并不知道; 进口javax.servlet.ServletException; 进口javax.servlet.annotation.WebServlet; 进口javax.servlet.http.HttpServlet; 进口javax.servlet.http.HttpServletRequest; 进口javax.servlet.http.HttpServletResponse; 进口org.apache.commons.fileupload.FileItem; 进口org.apache.commons.fileupload.disk.DiskFileItemFactory; 进口org.apache.commons.fileupload.servlet.ServletFileUpload; 进口dao.FileDao; @WebServlet ("/FileUpload”) 公开课FileUpload扩展HttpServlet { 私有静态最终长serialVersionUID l=1;//上传配置 私有静态最终int MEMORY_THRESHOLD=1024 * 1024 * 3;//3 mb 私有静态最终int MAX_FILE_SIZE=1024 * 1024 * 40;//40 mb 私有静态最终int MAX_REQUEST_SIZE=1024 * 1024 * 50;//50 mb 公共类(){ 超级(); } 保护无效doGet (HttpServletRequest请求,HttpServletResponse响应)抛出ServletException IOException { request.setCharacterEncoding (“utf - 8”); response.setCharacterEncoding(“utf - 8”); response.setContentType (“text/html; charset=utf - 8”); PrintWriter=response.getWriter (); 如果(! ServletFileUpload.isMultipartContent(请求)){//如果不是则停止 出去了。println(“错误:表单必须包含enctype=多部分/格式”); out.flush (); 返回; }//配置上传参数 DiskFileItemFactory工厂=new DiskFileItemFactory ();//设置内存临界值,超过后将产生临时文件并存储于临时目录中 factory.setSizeThreshold (MEMORY_THRESHOLD);//设置临时存储目录 工厂。setRepository(新文件(System.getProperty (“java.io.tmpdir”))); ServletFileUpload上传=new ServletFileUpload(工厂);//设置最大文件上传值 upload.setFileSizeMax (MAX_FILE_SIZE);//设置最大请求值(包含文件和表单数据) upload.setSizeMax (MAX_REQUEST_SIZE);//中文处理 upload.setHeaderEncoding (“utf - 8”); 字符串uploadPath=request.getServletContext () .getRealPath(“/文件”); 文件uploadDir=新文件(uploadPath); 如果(! uploadDir.exists ()) { uploadDir.mkdir (); } 尝试{//解析请求的内容提取文件数据 ListformItems=upload.parseRequest(请求); 如果(formItems !=零,,formItems.size()比;0){//迭代表单数据 (FileItem项目:formItems) {//处理不在表单中的字段 如果(! item.isFormField ()) { 字符串文件名=新文件(item.getName ()) . getname (); 字符串filePath=uploadPath +文件。分离器+文件名; 文件storeFile=新文件(filePath);//在控制台输出文件的上传路径//System.out.println (filePath);//保存文件到硬盘 如果(storeFile.exists ()) { out.println(“上传失败,文件已存在!”); 其他}{ item.write (storeFile); out.println(“文件上传成功!”); } } } } }捕捉(例外的前女友){ response.getWriter () .println(“文件上传成功!”); } } 保护无效doPost (HttpServletRequest请求,HttpServletResponse响应)抛出ServletException IOException { doGet(请求、响应); } } >之前 <强>二。下载强>
1。下载链接:
FileDownload& # 63;文件名=" + URLEncoder.encode(文件名,“utf - 8”) - - - - - - - - - -需要对URL中的中文参数进行编码,否则会出现乱码
2。后台:
进口java.io.File; 进口java.io.FileInputStream; 进口java.io.IOException; 进口java.io.PrintWriter; 进口java.net.URLEncoder; 进口javax.servlet.ServletException; 进口javax.servlet.annotation.WebServlet; 进口javax.servlet.http.HttpServlet; 进口javax.servlet.http.HttpServletRequest; 进口javax.servlet.http.HttpServletResponse; @WebServlet ("/FileDownload”) 公开课FileDownload扩展HttpServlet { 私有静态最终长serialVersionUID l=1; 公共FileDownload () { 超级(); } 保护无效doGet (HttpServletRequest请求,HttpServletResponse响应)抛出ServletException IOException { request.setCharacterEncoding (“utf - 8”); response.setCharacterEncoding(“utf - 8”); PrintWriter=response.getWriter (); 字符串dirPath=request.getServletContext () .getRealPath(“/文件”); 字符串文件名=URLEncoder.encode (request.getParameter(“文件名”)、“utf - 8”);//需要对URL中的中文参数进行编码,否则出现乱码 response.getWriter () .println(文件名); 字符串filepath=dirPath +文件。分离器+文件名; response.setContentType(“应用程序/八进制”); 响应。setHeader(“附加”、“依恋;文件名=\ " +文件名+ " \ "); FileInputStream FileInputStream=new FileInputStream (filepath); int i=0; 在((i=fileInputStream.read ()) !=1) { out.write(我); } fileInputStream.close (); out.close (); } 保护无效doPost (HttpServletRequest请求,HttpServletResponse响应)抛出ServletException IOException { doGet(请求、响应); } }java实现文件上传下载