SpringBoot+Thymeleaf实现图片上传和显示

1.导入两个图片上传所需要的依赖,查看自己是否已经导入。

 <!--图片上传依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>  
            <artifactId>fastjson</artifactId>
            <version>1.2.75</version>
        </dependency>

        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>jquery</artifactId>
            <version>3.3.1</version>
        </dependency>

2.添加本地图片映射 在application启动类中添加:


@SpringBootApplication
@MapperScan("com.example.mapper")
public class MybatisplusApplication implements WebMvcConfigurer {

    public static void main(String[] args) {
        SpringApplication.run(MybatisplusApplication.class, args);
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        /*
        *  资源映射路径
        *  addResourceHandler:访问映射路径
        *  addResourceLocations:资源的绝对路径
         */
        registry.addResourceHandler("/imctemp-rainy/**").addResourceLocations("file:D:/ruoyi/mybatisplus/src/main/resources/static/img/");
    }
}

3.html主页面
<td><img th:src="@{${a.file}}" width="90" height="80"></td>图片显示

<!DOCTYPE html>
<head>
    <meta charset="utf-8"/>
    <title>图片上传</title>
</head>
<body xmlns:th="http://www.w3.org/1999/xhtml">
<div>
    <table border="1px" width="200px" cellspacing="0">
        <a th:href="@{/user/toAdd}">添加</a><br/>
        <tr>
            <td>id</td>
            <td>账号</td>
            <td>密码</td>
            <td>图片上传</td>
        </tr>
        <tr th:each="a:${a}">
            <td th:text="${a.id}"></td>
            <td th:text="${a.userName}"></td>
            <td th:text="${a.password}"></td>
            <td><img th:src="@{${a.file}}" width="90" height="80"> </td>
        </tr>
    </table>
</div>
</body>
</html>

4.html添加页面
<input name="file" id="file1" type="hidden"> 这的name是向后端数据库添加的
<input type="file" id="file">这是下面jq进行操作用的

----------------图片上传记得导入jq依赖----------------

  <tr>
           <td>
               <input name="file" id="file1"  type="hidden">
               <input type="file"  id="file">
               <p id="url"><img src="" width=200></p>
               <input type="button" id="button" value="上传" >
               <input type="button" id="t_button" value="取消上传" >
           </td>
       </tr>


    $(function () {
        $("#button").click(function () {
            var form = new FormData();
            form.append("file", document.getElementById("file").files[0]);
            $.ajax({
                url: "/user/upload",        //后台url
                data: form,
                cache: false,
                async: false,
                type: "POST",                   //类型,POST或者GET
                dataType: 'json',              //数据返回类型,可以是xml、json等
                processData: false,
                contentType: false,
                success: function (data) {      //成功,回调函数
                    if (data) {
                        var pic="/imctemp-rainy/"+data.fileName;
                        alert(pic);
                        $("#url img").attr("src",pic);
                        $("#file1").val("/imctemp-rainy/"+data.fileName)
                        // alert(JSON.stringify(data));

                    } else {
                        alert("失败");
                    }

                },
                error: function (er) {          //失败,回调函数
                    alert(JSON.stringify(data));
                }
            });
        });

        $("#t_button").click(function () {
            //这里分割字符串 /imctemp-rainy/157352875235607c10257539a5f4dcdaab233ca2832a5.jpg
            //需要用/分割字符先后获取最后一段字符串去上传到后台
            //alert($("#url img").attr("src"));
            var img = $("#url img").attr("src");
            var str = img.split("/");
            var str_img=str[str.length-1];
            //alert(str_img);
            $.post("/user/deleteImages",{filePath:str_img},function(data){
                alert(data);
                //这里我们取消上传成功之后去给换成一个暂无图片的一个图
                $("#url img").attr("src","/imctemp-rainy/11.jpg");
                $("#file1").val("/imctemp-rainy/11.jpg");
            });
        });
    })

5.控制器中图片上传 记得导入pom依赖 fastjson

  public static void uploadFile(byte[] file, String filePath, String fileName) throws Exception {
        File targetFile = new File(filePath);
        if (!targetFile.exists()) {
            targetFile.mkdirs();
        }
        FileOutputStream out = new FileOutputStream(filePath +"/"+ fileName);
        out.write(file);
        out.flush();
        out.close();
    }
    //处理文件上传
    @ResponseBody //返回json数据
    @RequestMapping(value = "upload", method = RequestMethod.POST)
    public JSONObject uploadImg(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
        String contentType = file.getContentType();
        //System.out.print(contentType);
        String fileName = System.currentTimeMillis()+file.getOriginalFilename();
        String filePath = "D:/ruoyi/mybatisplus/src/main/resources/static/img/";
        JSONObject jo = new JSONObject();//实例化json数据

        if (file.isEmpty()) {
            jo.put("success", 0);
            jo.put("fileName", "");
        }
        try {
            uploadFile(file.getBytes(), filePath, fileName);
            jo.put("success", 1);
            jo.put("fileName", fileName);
            // jo.put("xfileName", filePath+"/"+fileName);
        } catch (Exception e) {
            // TODO: handle exception

        }


        //返回json
        return jo;

    }


    @ResponseBody //返回json数据
    @RequestMapping("deleteImages")
    public String deleteImages(HttpServletRequest request) {
        String resultInfo = null;
        String filePath = request.getParameter("filePath");
        //这里是可以在控制器分割字符的一个方法
        //int lastIndexOf = filePath.lastIndexOf("/");
        //String sb = filePath.substring(lastIndexOf+1,filePath.length());
        //由于我们只获取了图片的名称并没有获取到所有的地址,,所以我们需要去给他进行添加存放图片的地址
        File file = new File("D:/ruoyi/mybatisplus/src/main/resources/static/img/"+filePath);
        if (file.exists()) {
            if (file.delete()) {
                resultInfo = "1-删除成功";
            }else {
                resultInfo = "0-删除失败";
            }
        }else {
            resultInfo = "文件不存在!";
        }
        return resultInfo;
    }

6.html修改页面

   <tr>
               <!--      <td><img th:src="@{${a.file}}"  width="90" height="80"></td>-->
                     <th>
                         <input name="file" id="file1"  type="hidden" th:value="${apple.file}"><!--修改时候需要添加th:value,value获取之前已存在的图片属性-->
                         <input type="file"  id="file">
                         <p id="url"><img th:src="@{${a.file}}"  width="90" height="80"></p>
                         <input type="button" id="button" value="上传" >
                         <input type="button" id="t_button" value="取消上传" >
                     </th>
                 </tr>

7.再在修改页面导入jq即可(与添加页面的jq相同),与添加图片共用controller中的方法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值