Spring MVC---解决图片上传丢失以及img标签显示本地磁盘保存的图片(七)

(一)解决图片上传丢失

如果在Tomcat部署路径下创建upload文件夹,每次部署项目的时候upload文件夹会被自动删除再重新创建upload文件夹,因此保存在upload文件夹中的图片或其它文件都会被删除。要想保存的文件和图片不被自动删除解决办法如下:

  • 在webapps并行的目录下,建一个upload文件,专门存储应用上传的文件。
  • 其它磁盘路径也可以,在webapps并行的目录下创建建一个upload文件方便查看。

(二)如何使用img标签显示本地磁盘保存的图片

今天遇到这样一个问题,在eclipse使用默认浏览器可以打开img标签引用本地磁盘路径的图片,但是使用Chrome、360和Firefox等外部浏览器无法打开本地磁盘路径下的图片。解决方法如下:

  • 在jsp页面标签引用本地路径下的图片,图片不会显示,需要在tomcat中配置虚拟路径。
在tomcat中配置虚拟路径步骤如下:

1.双击
这里写图片描述
2.点击modules

  • 真实路径:F:\Tomcat7\apache-tomcat-7.0.79
  • 虚拟路径:/upload代替真实路径
  • 创建images文件夹:项目自动在F:\Tomcat7\apache-tomcat-7.0.79下创建images文件夹

这里写图片描述
3.在jsp页面标签引用本地路径下的图片,使用虚拟路径引用本地磁盘下图片的方法如下:

方法:/虚拟路径/images文件夹/文件名
<img alt="" src="/upload/images/${newfilename}" width="140" height="170"/>

(三)文件上传实例演示

下载:文件上传项目源码

项目结构:
这里写图片描述这里写图片描述

1./FileUpload/WebContent/FileUpload.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件上传</title>
<script >
   function check(){

       var file=document.getElementById("file").value;

        if(file.length==0||file==""){
            alert("请选择上传文件");
            return false;
        }
        return true;
   }
</script>
</head>
<body>
   <form action="${pageContext.request.contextPath }/fileUpload"
    method="post" enctype="multipart/form-data" onsubmit="return check()">

    请选择文件:<input id="file" type="file" name="uploadfile" 
             multiple="multiple" /><br/><br/>
             <input type="submit" value="上传" />
    </form>
</body>
</html>
2./FileUpload/src/com/wang/FileUploadController.java
package com.wang;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
@Controller
public class FileUploadController {

    @RequestMapping("/fileUpload")
    /*必须使用注释 @RequestParam("uploadfile")List<MultipartFile> uploadfile
     *否则报Failed to instantiate [java.util.List]: Specified class is an interface错误 
     * */
    public String handleFormUpload(@RequestParam("uploadfile")List<MultipartFile> uploadfile, HttpServletRequest request) {

        // 如果上传文件存在
        if (!uploadfile.isEmpty() && uploadfile.size() > 0) {
            // 遍历文件
            for (MultipartFile file : uploadfile) {

                // 获取上传文件的名称
                String originalFilename = file.getOriginalFilename();
                System.out.println("文件名"+originalFilename);

                // 设置上传文件保存的地址目录
                //String dirpath = request.getServletContext().getRealPath("/images");

                //创建images文件夹
                File filepath = new File("F:\\Tomcat7\\apache-tomcat-7.0.79\\images");
                // 如果保存文件的目录不存在,创建upload文件夹
                if (!filepath.exists()) {
                    filepath.mkdirs();
                }
                // 1.使用UUID重新命名上传文件的名称/2.替换上传文件的名称
                String newFilename =UUID.randomUUID()+ originalFilename.replace(originalFilename, ".jpg");
                System.out.println(newFilename);
                try {
                    // 使用MultipartFile的方法将文件上传到指定位置
                    file.transferTo(new File(filepath +File.separator+ newFilename));
                    System.out.println("目标路径"+filepath +File.separator+ newFilename);

                    //定义列表保存图片保存的路径
                    List<String> filenames=new ArrayList<String>();
                    filenames.add(newFilename);

                    request.setAttribute("filenames", filenames);
                } catch (Exception e) {

                    e.printStackTrace();
                    return "error";

                }
            }
        }
        return "sucess";
    }
}

3./FileUpload/WebContent/WEB-INF/jsp/sucess.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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>
</head>
<body>
   <h1>文件上传成功</h1>
   <form >
       <table border="1">
          <tr>
             <th>图片展示</th>
            <!--  <th>操作</th> -->
          </tr>
          <c:forEach items="${filenames}" var="newfilename">

              <!--路径为以下形式,浏览器可以打开图片-->
             <td><img alt="" src="/upload/images/${newfilename}" width="140" height="170"/> </td>  

          </c:forEach>
       </table>
   </form>
</body>
</html>
4.JSP页面显示虚拟路径下的图片:

这里写图片描述

5.JSP页面源码如图所示:

这里写图片描述

6.images文件夹保存图片永不丢失

这里写图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
spring mvc-5.2.3.release.zip 是Spring框架的一个版本,具体说就是Spring MVC(Model-View-Controller)模块的5.2.3版本的发布文件Spring MVCSpring框架中用于开发Web应用程序的一部分,它提供了一种基于MVC模式的架构来组织和管理Web应用程序的各个组件。 首先,spring mvc-5.2.3.release.zip文件是一个压缩文件,它包含了Spring MVC框架的相关文件和资源。你可以通过下载和解压这个文件,来获取Spring MVC的相关代码和配置文件。 在这个压缩文件中,你可以找到一些重要的文件文件夹。其中包括: 1. lib文件夹:这个文件夹中包含了Spring MVC框架所依赖的一些库文件,例如Spring核心库、Servlet API等。通过将这些库文件添加到你的项目中,你就可以在你的应用程序中使用Spring MVC提供的功能了。 2. config文件夹:这个文件夹中包含了Spring MVC框架的一些配置文件,例如web.xml、spring配置文件等。你需要根据你的具体需求修改和配置这些文件,以使得Spring MVC可以正确地工作在你的应用程序中。 3. sample文件夹:这个文件夹中包含了一些示例代码和示例应用程序,这些示例可以帮助你理解和学习Spring MVC的使用方法和开发技巧。 总之,spring mvc-5.2.3.release.zip是Spring MVC框架5.2.3版本的发布文件,通过下载和解压这个文件,你可以获取到Spring MVC框架的相关代码和资源,从而在你的Web应用程序中使用和开发Spring MVC功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值