servlet实现图片预览、文件上传下载(转载)
来源:互联网 发布:java 短链接 编辑:程序博客网 时间:2024/06/08 17:25
//文件上传package com.imooc.servlet;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.RandomAccessFile;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class UploadServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req,resp); } public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //从request当中获取流信息 InputStream fileSource = req.getInputStream(); String tempFileName = "E:/tempFile"; //tempFile指向临时文件 File tempFile = new File(tempFileName); //outputStram文件输出流指向这个临时文件 FileOutputStream outputStream = new FileOutputStream(tempFile); byte b[] = new byte[1024]; int n; while(( n = fileSource.read(b)) != -1){ outputStream.write(b, 0, n); } //关闭输出流、输入流 outputStream.close(); fileSource.close(); //获取上传文件的名称 RandomAccessFile randomFile = new RandomAccessFile(tempFile,"r"); randomFile.readLine(); String str = randomFile.readLine(); int beginIndex = str.lastIndexOf("\\") + 1; int endIndex = str.lastIndexOf("\""); String filename = str.substring(beginIndex, endIndex); System.out.println("filename:" + filename); //重新定位文件指针到文件头 randomFile.seek(0); long startPosition = 0; int i = 1; //获取文件内容 开始位置 while(( n = randomFile.readByte()) != -1 && i <=4){ if(n == '\n'){ startPosition = randomFile.getFilePointer(); i ++; } } startPosition = randomFile.getFilePointer() -1; //获取文件内容 结束位置 randomFile.seek(randomFile.length()); long endPosition = randomFile.getFilePointer(); int j = 1; while(endPosition >=0 && j<=2){ endPosition--; randomFile.seek(endPosition); if(randomFile.readByte() == '\n'){ j++; } } endPosition = endPosition -1; //设置保存上传文件的路径 String realPath = getServletContext().getRealPath("/") + "images"; File fileupload = new File(realPath); if(!fileupload.exists()){ fileupload.mkdir(); } File saveFile = new File(realPath,filename); RandomAccessFile randomAccessFile = new RandomAccessFile(saveFile,"rw"); //从临时文件当中读取文件内容(根据起止位置获取) randomFile.seek(startPosition); while(startPosition < endPosition){ randomAccessFile.write(randomFile.readByte()); startPosition = randomFile.getFilePointer(); } //关闭输入输出流、删除临时文件 randomAccessFile.close(); randomFile.close(); tempFile.delete(); req.setAttribute("result", "上传成功!"); RequestDispatcher dispatcher = req.getRequestDispatcher("jsp/01.jsp"); dispatcher.forward(req, resp); }}
//文件下载package com.imooc.servlet;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class DownloadServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取文件下载路径 String path = getServletContext().getRealPath("/") + "images/"; String filename = req.getParameter("filename"); File file = new File(path + filename); if(file.exists()){ //设置相应类型application/octet-stream resp.setContentType("application/x-msdownload"); //设置头信息 resp.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\""); InputStream inputStream = new FileInputStream(file); ServletOutputStream ouputStream = resp.getOutputStream(); byte b[] = new byte[1024]; int n ; while((n = inputStream.read(b)) != -1){ ouputStream.write(b,0,n); } //关闭流、释放资源 ouputStream.close(); inputStream.close(); }else{ req.setAttribute("errorResult", "文件不存在下载失败!"); RequestDispatcher dispatcher = req.getRequestDispatcher("jsp/01.jsp"); dispatcher.forward(req, resp); } } public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req,resp); }}
jsp页面<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP '01.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link rel="stylesheet" type="text/css" href="css/common.css" /> <script type="text/javascript" src="js/jquery-1.11.1.js"></script> <script type="text/javascript"> $(function(){ $(".thumbs a").click(function(){ var largePath = $(this).attr("href"); var largeAlt = $(this).attr("title"); $("#largeImg").attr({ src : largePath, alt : largeAlt }); return false; }); $("#myfile").change(function(){ $("#previewImg").attr("src","file:///" + $("#myfile").val()); }); var la = $("#large"); la.hide(); $("#previewImg").mousemove(function(e){ la.css({ top : e.pageY, left : e.pageX }).html('<img src = "' + this.src + '" />').show(); }).mouseout(function(){ la.hide(); }); }); /* //使用js实现文件上传图片的预览 function showPreview(obj){ var str = obj.value; document.getElementById("previewImg").innerHTML = "<img src = '" + str + "' />"; } */ </script> </head> <body> <img id="previewImg" src="images/preview.jpg" width="80" height="80" /> <form action="uploadServlet.do" method="post" enctype="multipart/form-data"> 请选择图片:<input id="myfile" name="myfile" type="file" onchange="showPreview(this)"/> <input type="submit" value="提交" />${result} </form> 下载:<a href="downloadServlet.do?filename=test.txt">test.txt</a> ${errorResult} <div id="large"></div> <hr> <h2>图片预览</h2> <p><img id="largeImg" src="images/img1-lg.jpg" alt="Large Image"/></p> <p class="thumbs"> <a href="images/img2-lg.jpg" title="Image2"><img src="images/img2-thumb.jpg"></a> <a href="images/img3-lg.jpg" title="Image3"><img src="images/img3-thumb.jpg"></a> <a href="images/img4-lg.jpg" title="Image4"><img src="images/img4-thumb.jpg"></a> <a href="images/img5-lg.jpg" title="Image5"><img src="images/img5-thumb.jpg"></a> <a href="images/img6-lg.jpg" title="Image6"><img src="images/img6-thumb.jpg"></a> </p> </body></html>
转载自慕课网《easy实现文件上传下载(David)》视频教程;http://www.imooc.com/video/5566
0 0
- servlet实现图片预览、文件上传下载(转载)
- servlet实现文件上传下载
- Servlet实现文件的上传下载
- Jsp+Servlet实现文件上传下载
- 文件上传下载(转载)
- 转载tangl_99的Servlet 实现文件上传下载--自己的一点心得
- JSP/servlet实现文件上传下载和删除
- 文件上传下载—servlet API实现
- 4、servlet实现文件的上传下载
- 文件上传下载—servlet API实现
- 使用JSP+Servlet实现文件上传下载
- 【转载】js 实现 本地图片预览
- 文件、图片的上传并实现图片预览(二)
- 用MVC实现简单的文件(图片)上传下载功能
- 多图片(文件)上传下载
- Android上传下载文件(图片)
- 使用PhpMysql实现图片文件上传下载
- ionic3 文件上传下载和预览
- UI控件常见属性总结
- 浅析 iOS 第三方框架 MBProgressHUD
- Android开发——数据库及表的建立
- App开发日报 2015-04-10
- 关于单例模式的几种实现
- servlet实现图片预览、文件上传下载(转载)
- VS2010+VMWare 远程调试exe程序的配置总结
- 【leetcode with java】1 Two Sum
- iFrame跨域解决办法
- MCU程序设计之如何使用标准C函数
- IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)
- JAVA 计算两个日期相差的天数
- 分治策略实验报告补充示例 汉诺塔实现
- 十九、Linux系统编程-信号(六)三种不同精度的睡眠sleep、usleep、nanosleep