SSM+EasyUI实现图片本地上传及预览

本文章针对有SSM基础的新手,老鸟请多指正!

1、数据库设计

2、model、dao、service、Impl、mapper省略

上传这里的思路就是正常的增加数据,前端显示是用拼接方式显示图片,参照上一篇博客。点这里!!!!

3、前台上传窗口

<form method="post" id="fm" enctype="multipart/form-data">
            <table cellspacing="8px;">
                <tr>
                    <td>损坏部位:</td>
                    <td>
                        <div id="Imgdiv">
                            <img id="Img" src=""
                                 height="190px">
                        </div>
                         <br>
                        <input class="easyui-filebox" id="file" name="file"
                               data-options="prompt:'选择文件',onChange:change_photo,buttonText:'&nbsp;选&nbsp;择&nbsp;',required:true"
                               style="width:200px">
                        <span style="color: red">*</span>
                    </td>
                </tr>
            </table>
</form>

4、controller

数据库存放图片字段这里是存放学生名字+时间戳,这样是为了防止浏览器缓存造成的图片显示问题

@RequestMapping("/save")
    public String save(Student student, @RequestParam("file") MultipartFile file, HttpServletRequest req, HttpServletResponse res) throws Exception {
        //操作记录条数,初始化为0
        int resultTotal = 0;
        if (student.getId() == null) {
            if (!file.isEmpty()) {
                student.setSimage(student.getName() + "-" + System.currentTimeMillis() + ".jpg");
                BufferedOutputStream out = new BufferedOutputStream(
                        new FileOutputStream(new File("F:\\IDEA\\WorkSpace\\studormitory\\src\\main\\webapp\\" +
                                "static\\images\\student\\" + student.getSimage())));//保存图片到目录下
                out.write(file.getBytes());
                out.flush();
                out.close();
            }
.....

 

 5、照片预览js代码(单独写,在页面引入js文件)

function change_photo(){
    PreviewImage($("input[name='file']")[0], 'Img', 'Imgdiv');
}

function PreviewImage(fileObj,imgPreviewId,divPreviewId){
    var allowExtention=".jpg,.bmp,.gif,.png";//允许上传文件的后缀名document.getElementById("hfAllowPicSuffix").value;
    var extention=fileObj.value.substring(fileObj.value.lastIndexOf(".")+1).toLowerCase();
    var browserVersion= window.navigator.userAgent.toUpperCase();
    if(allowExtention.indexOf(extention)>-1){
        if(fileObj.files){//HTML5实现预览,兼容chrome、火狐7+等
            if(window.FileReader){
                var reader = new FileReader();
                reader.onload = function(e){
                    document.getElementById(imgPreviewId).setAttribute("src",e.target.result);
                }
                reader.readAsDataURL(fileObj.files[0]);
            }else if(browserVersion.indexOf("SAFARI")>-1){
                alert("不支持Safari6.0以下浏览器的图片预览!");
            }
        }else if (browserVersion.indexOf("MSIE")>-1){
            if(browserVersion.indexOf("MSIE 6")>-1){//ie6
                document.getElementById(imgPreviewId).setAttribute("src",fileObj.value);
            }else{//ie[7-9]
                fileObj.select();
                if(browserVersion.indexOf("MSIE 9")>-1)
                    fileObj.blur();//不加上document.selection.createRange().text在ie9会拒绝访问
                var newPreview =document.getElementById(divPreviewId+"New");
                if(newPreview==null){
                    newPreview =document.createElement("div");
                    newPreview.setAttribute("id",divPreviewId+"New");
                    newPreview.style.width = document.getElementById(imgPreviewId).width+"px";
                    newPreview.style.height = document.getElementById(imgPreviewId).height+"px";
                    newPreview.style.border="solid 1px #d2e2e2";
                }
                newPreview.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src='" + document.selection.createRange().text + "')";
                var tempDivPreview=document.getElementById(divPreviewId);
                tempDivPreview.parentNode.insertBefore(newPreview,tempDivPreview);
                tempDivPreview.style.display="none";
            }
        }else if(browserVersion.indexOf("FIREFOX")>-1){//firefox
            var firefoxVersion= parseFloat(browserVersion.toLowerCase().match(/firefox\/([\d.]+)/)[1]);
            if(firefoxVersion<7){//firefox7以下版本
                document.getElementById(imgPreviewId).setAttribute("src",fileObj.files[0].getAsDataURL());
            }else{//firefox7.0+
                document.getElementById(imgPreviewId).setAttribute("src",window.URL.createObjectURL(fileObj.files[0]));
            }
        }else{
            document.getElementById(imgPreviewId).setAttribute("src",fileObj.value);
        }
    }else{
        alert("仅支持"+allowExtention+"为后缀名的文件!");
        fileObj.value="";//清空选中文件
        if(browserVersion.indexOf("MSIE")>-1){
            fileObj.select();
            document.selection.clear();
        }
        fileObj.outerHTML=fileObj.outerHTML;
    }
}

效果展示:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值