servlet实现图片下载

需要的都在注释里,修改一下就可以用了:

首先是jsp页面,这里下载通过判断id得到要下载的图片id值,访问servlet,Jsp页面:


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<!--输出所有的学生信息 -->
<a  href="/updownload2/add.jsp">添加学生信息</a>

<table align="center" border="1" width="70%">
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>分数</th>
    </tr>
    <c:forEach items="${requestScope.stuList2}" var="stu" >
        <tr>
            <td>${stu.id}</td>
            <td>${stu.name }</td>
            <td>${stu.age }</td>
            <td>${stu.score}</td>
            <td><img src="/updownload2/servlet/DownloadServlet?id=${stu.id}" width="100px"> </td>
            <td><a href="/updownload2/servlet/DownloadServlet?id=${stu.id}">下载</a></td>
        </tr>
    </c:forEach>
</table>


</body>
</html>

servlet页面:

package com.bjsxt.servlet;

import com.bjsxt.entity.Student;
import com.bjsxt.service.StudentService;
import com.bjsxt.service.impl.StudentServiceImpl;
import org.apache.commons.io.IOUtils;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;

public class DownloadServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        int id=Integer.parseInt(request.getParameter("id"));
        StudentService studentService=new StudentServiceImpl();
        //查询数据库得到存储图片的格式和内容
        Student student=studentService.findById(id);
        //图片真实名字
        String realName=student.getRealName();
        //图片的唯一名 uuid生成的名字
        String uuidName=student.getUuidName();
        //什么类型 image/jpeg
        String mimeType=student.getPhotoType();
        //图片的路径   图片的名称
        File file=new File("D:/upload",uuidName);
        //设置响应的格式
        //以图片的形式开始响应
        response.setContentType(mimeType);
        //设置响应长度
        response.setContentLength((int)file.length());
        //设置下载的时候 对中文图片的名字进行处理,保证下载的时候图片的名字是原来的中文
        String userAgent = request.getHeader("User-Agent").toLowerCase();
        if(userAgent.indexOf("msie")>=0){ //msie
            realName = URLEncoder.encode(realName, "utf-8");
        }else{
            byte [] bytes = realName.getBytes("utf-8");
            realName = new String(bytes,"iso-8859-1");
        }
        //让浏览器知道是下载的是什么类型(内容处理-附件)
        response.setHeader("Content-disposition","attachment;filename="+realName);
        //创建输入输出流
        //先找到本地的文件
        InputStream is=new FileInputStream(file);
        //创建输出流--往浏览器进行输出
        OutputStream os=response.getOutputStream();
        //使用输入流输出流完成文件的下载 这里使用了 IOUtils工具类
        IOUtils.copy(is,os);
        //关闭流
        is.close();
        os.close();

    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我可以回答您的问题。 JSPServlet是Java Web开发中的两个重要组成部分。JSP(Java Server Pages)是一种在服务器端生成动态Web页面的技术,而Servlet是一种运行在服务器端的Java程序,用于处理HTTP请求和响应。 要实现图像上传和显示,您可以按照以下步骤操作: 1. 在JSP页面中,创建一个HTML表单,使用户可以选择要上传的图像文件。在表单中,您可以使用<input type="file">元素来让用户选择文件。 2. 在表单中,添加一个提交按钮,将表单数据发送到服务器。 3. 创建一个Servlet,用于处理表单数据。在Servlet中,您可以使用Apache Commons FileUpload库来处理文件上传。 4. 在Servlet中,将上传的图像文件保存到服务器上的某个位置,例如Web应用程序的根目录下的“images”文件夹中。 5. 将上传的图像文件的路径存储在一个Java对象中,并将该对象作为请求属性传递回JSP页面。 6. 在JSP页面中,使用<img>元素显示上传的图像。您可以使用<img>元素的src属性指定图像文件的路径,该路径应该是从Web应用程序的根目录开始的相对路径。 下面是一个简单的示例,演示如何在JSP页面中实现图像上传和显示: 在JSP页面中: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>图像上传和显示</title> </head> <body> <h1>图像上传和显示</h1> <form action="uploadServlet" method="post" enctype="multipart/form-data"> <label for="file">选择一个图像文件:</label> <input type="file" name="file" id="file"> <br> <input type="submit" value="上传"> </form> <% String imagePath = (String) request.getAttribute("imagePath"); %> <% if (imagePath != null) { %> <h2>上传的图像:</h2> <img src="<%= request.getContextPath() %>/<%= imagePath %>"> <% } %> </body> </html> ``` 在Servlet中: ``` import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import java.io.File; import java.io.IOException; import java.util.List; @WebServlet(name = "UploadServlet", urlPatterns = {"/uploadServlet"}) @MultipartConfig public class UploadServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (isMultipart) { DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); try { List<FileItem> items = upload.parseRequest(request); for (FileItem item : items) { if (!item.isFormField()) { String ### 回答2: 采用jsp servlet实现图片上传和展示可以通过以下步骤实现: 1. 在jsp页面中创建一个表单,包含一个文件选择框和一个提交按钮。用户可以通过文件选择框选择需要上传的图片。 2. 在servlet中处理上传的图片。首先,通过HttpServletRequest对象获取上传的文件。然后,可以通过文件的输入流将其保存在服务器的指定位置。可以使用FileOutputStream创建一个输出流,再使用InputStream的getInputStream()方法获取输入流,并将其写入输出流中保存。 3. 在servlet中处理上传成功后的图片展示。可以通过设置返回的响应头为图片的MIME型,将图片的二进制数据读取并写入响应的输出流中,然后将其返回给浏览器以展示图片。 4. 在jsp页面中,可以使用img标签src属性servlet返回的图片url设置为要展示的图片路径,并在页面中展示图片。 需要注意的是,为了防止恶意上传和安全问题,可以进行文件型的验证,只允许上传图片型的文件。还可以给上传的文件进行重命名,以避免重复文件名的问题。同时,需要在服务器中配置合适的路径,用于保存上传的图片文件。 以上是基本的实现步骤,具体细节可以根据实际需求进行扩展和优化。 ### 回答3: 使用JSPServlet实现图片上传和展示的步骤如下: 1. 首先,创建一个包含上传表单的JSP页面。该页面应该包含一个文件输入框和一个提交按钮。用户可以选择要上传的图片文件,并点击提交按钮将其发送到服务器。 2. 创建一个Servlet来处理文件上传请求。在该Servlet中,我们可以使用Apache Commons FileUpload库来解析上传的文件,并将其保存到服务器上的指定位置。首先,我们需要检查请求中是否包含文件上传数据,然后通过FileUpload解析这些数据。最后,使用IO流将上传的文件保存到服务器上的指定位置。 3. 接下来,我们可以创建一个显示图片JSP页面。该页面应该包含一个用于展示图片img标签和一个用于选择要展示的图片的下拉框。我们可以使用Java代码读取服务器上的图片文件,并将其作为img标签src属性值。 4. 再次创建一个Servlet来处理显示图片请求。在该Servlet中,我们需要读取请求参数中选择的图片文件的名称,并将其转化为服务器上的文件路径。然后,我们可以使用IO流将该图片文件的内容写入到响应中,以便将其显示在浏览器中。 5. 最后,我们需要配置web.xml文件来映射ServletJSP页面的URL。确保我们可以通过访问相应的URL来上传和展示图片。 通过以上步骤,我们可以使用JSPServlet实现图片上传和展示的功能。用户可以通过上传表单选择并上传图片文件,然后可以在展示页面中查看已上传的图片

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值