springmvc上传图片

1.加入jar包

上边的解析内部使用下边的jar进行图片上传。


所需jar已传入我的资源页 名字为springmc文件上传


2. SpringMVC 添加对多部件解析的Bean

在 页面form中提交enctype=”multipart/form-data”的数据时,需要springmvc对multipart类型的数据进行解析。所以在servlet.xml中添加解析器(如果表单的类型是multipart,

一定要配置这个解析器,否则参数绑定失败,传参失败)。如下:

  1. <bean id=“multipartResolver”  
  2.         class=“org.springframework.web.multipart.commons.CommonsMultipartResolver”>  
  3.         <!– 设置传输文件的最大值–>  
  4.         <property name=“maxUploadSize”>  
  5.             <value>104857600</value>  
  6.         </property>  
  7.         <property name=“maxInMemorySize”>  
  8.             <value>4096</value>  
  9.         </property>  
  10.     </bean>  
<bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置传输文件的最大值-->
        <property name="maxUploadSize">
            <value>104857600</value>
        </property>
        <property name="maxInMemorySize">
            <value>4096</value>
        </property>
    </bean>

3. 配置本地虚拟服务存储和读取保存的本地图片

由于我们有时候保存的图片数量很多或者图片很大,不可能把图片放到数据库中进行存储,所以最好的办法就是放到服务器单独的文件夹中,但是

jsp读取不到tomcat工程以外的文件,所以就需要配置虚拟目录可以使jsp读取到本地的文件,具体配置如下:

假如你想把文件的路径设置为F:\java_code\picture

 第一种方法就是双击tomcat server进行配置如图:


 第二种方法:也可以在tomcat的server.xml中进行配置

  1. <span style=“color:#ff0000;”><Context docBase=“F:\java_code\picture” path=“/touxiang” reloadable=“false”/></span>  
<span style="color:#ff0000;"><Context docBase="F:\java_code\picture" path="/touxiang" reloadable="false"/></span>


4.编写上传图片的前台页面

我使用的是jQuery,这样可以直接显示出上传的图片

  1. <%@ page language=“java” contentType=“text/html; charset=UTF-8”  
  2.     pageEncoding=“UTF-8”%>  
  3. <%@page isELIgnored=“false” %>  
  4. <!DOCTYPE html PUBLIC ”-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>  
  5. <html>  
  6. <head>  
  7. <%@include file=“/jsp/include.jsp”%>  
  8.   
  9. <script type=“text/javascript”>  
  10. function uploadPhoto() {  
  11.     var imagePath = ("#image_input").val();&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(<span class="attribute">imagePath</span><span>&nbsp;==&nbsp;"")&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("please&nbsp;upload&nbsp;image&nbsp;file");&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;<span class="attribute">strExtension</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">imagePath</span><span>.substr(imagePath.lastIndexOf('.')&nbsp;+&nbsp;1);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(strExtension&nbsp;!=&nbsp;'jpg'&nbsp;&amp;&amp;&nbsp;strExtension&nbsp;!=&nbsp;'gif'&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;&nbsp;strExtension&nbsp;!=&nbsp;'png'&nbsp;&amp;&amp;&nbsp;strExtension&nbsp;!=&nbsp;'bmp')&nbsp;{&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("please&nbsp;upload&nbsp;file&nbsp;that&nbsp;is&nbsp;a&nbsp;image");&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;(“#formPhoto”).ajaxSubmit({  
  12.         type : ‘POST’,  
  13.         url : ‘uploadPhoto.do’,  
  14.         success : function(data) {  
  15.             alert(“上传成功”);  
  16.             ("#imgDiv").empty();&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">span</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">"color:#ff0000;"</span><span class="tag">&gt;</span><span>(“#imgDiv”).html(‘<img src=“/touxiang/’+data+’”/>‘);//</span><span style=“color:#000099;”>配置的虚拟路径加上文件名直接显示在div中</span>  
  17.             $(“#imgDiv”).show();  
  18.         },  
  19.         error : function() {  
  20.             alert(“上传失败,请检查网络后重试”);  
  21.         }  
  22.     });  
  23.   
  24. }  
  25. </script>  
  26. </head>  
  27. <body>  
  28.     <table>  
  29.           
  30.         <tr>  
  31.             <td colspan=“2”>  
  32.                 <form id=“formPhoto” enctype=“multipart/form-data”>  
  33.                     <table>  
  34.                         <tr>  
  35.                             <td>选择文件:<input type=“file” name=“file” id=“image_input”></td>  
  36.                             <td><input type=“button” value=“上传” id=“upLoadImg” onclick=“uploadPhoto()”></td>  
  37.                         </tr>  
  38.                     </table>  
  39.                 </form>  
  40.             </td>  
  41.         </tr>  
  42.           
  43.         <tr>  
  44.             <td colspan=“2”>  
  45.                 <div id=“imgDiv”></div>  
  46.             </td>  
  47.         </tr>  
  48.     </table>  
  49. </body>  
  50. </html>  
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page isELIgnored="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<%@include file="/jsp/include.jsp"%>

<script type="text/javascript">
function uploadPhoto() {
    var imagePath = $("#image_input").val();
    if (imagePath == "") {
        alert("please upload image file");
        return false;
    }
    var strExtension = imagePath.substr(imagePath.lastIndexOf('.') + 1);
    if (strExtension != 'jpg' && strExtension != 'gif'
            && strExtension != 'png' && strExtension != 'bmp') {
        alert("please upload file that is a image");
        return false;
    }
    $("#formPhoto").ajaxSubmit({
        type : 'POST',
        url : 'uploadPhoto.do',
        success : function(data) {
            alert("上传成功");
            $("#imgDiv").empty();
            <span style="color:#ff0000;">$("#imgDiv").html('<img src="/touxiang/'+data+'"/>');//</span><span style="color:#000099;">配置的虚拟路径加上文件名直接显示在div中</span>
            $("#imgDiv").show();
        },
        error : function() {
            alert("上传失败,请检查网络后重试");
        }
    });

}
</script>
</head>
<body>
    <table>

        <tr>
            <td colspan="2">
                <form id="formPhoto" enctype="multipart/form-data">
                    <table>
                        <tr>
                            <td>选择文件:<input type="file" name="file" id="image_input"></td>
                            <td><input type="button" value="上传" id="upLoadImg" οnclick="uploadPhoto()"></td>
                        </tr>
                    </table>
                </form>
            </td>
        </tr>

        <tr>
            <td colspan="2">
                <div id="imgDiv"></div>
            </td>
        </tr>
    </table>
</body>
</html>

4.编写controller层,用于图片保存到本地

返回到前台一个本地的路径,注意因为我们已经配置好了虚拟路径只需要把图片的名字返回到前台即可

  1. @RequestMapping(“uploadPhoto”)  
  2.    @ResponseBody  
  3.    public String uploadImage(HttpServletRequest request,  
  4.            HttpServletResponse response, HttpSession session,  
  5.            @RequestParam(value = “file”, required = true) MultipartFile file)  
  6.            throws IllegalStateException, IOException {  
  7.        //String path = session.getServletContext().getRealPath(“/upload”);  
  8.        String pic_path = ”F:\\java_code\\picture\\”;  
  9.        System.out.println(”real path: ” + pic_path);  
  10.        String fileName = file.getOriginalFilename();  
  11.        System.out.println(”file name: ” + fileName);  
  12.        File targetFile = new File(pic_path, fileName);  
  13.        if (!targetFile.exists()) {  
  14.            targetFile.mkdirs();  
  15.        }  
  16.        file.transferTo(targetFile);  
  17.        String fileUrl = fileName;  
  18.        return fileUrl;  
  19.    }  
 @RequestMapping("uploadPhoto")
    @ResponseBody
    public String uploadImage(HttpServletRequest request,
            HttpServletResponse response, HttpSession session,
            @RequestParam(value = "file", required = true) MultipartFile file)
            throws IllegalStateException, IOException {
        //String path = session.getServletContext().getRealPath("/upload");
        String pic_path = "F:\\java_code\\picture\\";
        System.out.println("real path: " + pic_path);
        String fileName = file.getOriginalFilename();
        System.out.println("file name: " + fileName);
        File targetFile = new File(pic_path, fileName);
        if (!targetFile.exists()) {
            targetFile.mkdirs();
        }
        file.transferTo(targetFile);
        String fileUrl = fileName;
        return fileUrl;
    }

至此图片上传到本地就已经完成了




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值