头像上传前本地预览功能的实现(兼容ie8)

以下代码为头像的上传前预览功能的实现,UI可自行发挥。可用form表单提交文件,也可使用jquery.form.js插件实现。下面demo中使用的form提交。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<form action="demo.php" enctype="multipart/form-data">
    <input type="file" id="up" name="userImg">
    <img id="ImgPr" width="120" height="120"/>
    <input type="submit"/>
</form>
<script src="jquery-1.8.3.min.js"></script>
<script>
    $(function () {
        $("#up").uploadPreview();
    });
</script>
<script>
    jQuery.fn.extend({
        uploadPreview: function (opts) {
            var _self = this,
                    _this = $(this);
            opts = jQuery.extend({
                //指定预览照片的容器
                Img: "ImgPr",
                //指定容器宽高
                Width: 100,
                Height: 100,
                //指定可上传文件的类型
                ImgType: ["gif", "jpeg", "jpg", "bmp", "png"],
                Callback: function () {}
            }, opts || {});
            _self.getObjectURL = function (file) {
                var url = null;
                if (window.createObjectURL != undefined) {
                    url = window.createObjectURL(file)
                } else if (window.URL != undefined) {
                    url = window.URL.createObjectURL(file)
                } else if (window.webkitURL != undefined) {
                    url = window.webkitURL.createObjectURL(file)
                }
                return url
            };
            _this.change(function () {
                if (this.value) {
                    if (!RegExp("\.(" + opts.ImgType.join("|") + ")$", "i").test(this.value.toLowerCase())) {
                        alert("选择文件错误,图片类型必须是" + opts.ImgType.join(",") + "中的一种");
                        this.value = "";
                        return false
                    }
                    if ($.browser.msie) {
                        try {
                            $("#" + opts.Img).attr('src', _self.getObjectURL(this.files[0]))
                        } catch (e) {
                            var src = "";
                            var obj = $("#" + opts.Img);
                            var div = obj.parent("div")[0];
                            _self.select();
                            if (top != self) {
                                window.parent.document.body.focus()
                            } else {
                                _self.blur()
                            }
                            src = document.selection.createRange().text;
                            document.selection.empty();
                            obj.hide();
                            obj.parent("div").css({
                                'filter': 'progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)',
                                'width': opts.Width + 'px',
                                'height': opts.Height + 'px'
                            });
                            div.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = src
                        }
                    } else {
                        $("#" + opts.Img).attr('src', _self.getObjectURL(this.files[0]))
                    }
                    opts.Callback()
                }
            })
        }
    });
</script>
</body>
</html>


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现 SSM 上传头像功能,需要在端页面设计一个上传头像表单,然后在后端编写上传接口。 1. 端页面设计 在端页面中,需要添加一个上传头像表单,可以使用 HTML 的 form 标签来实现。代码如下: ```html <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file"/> <input type="submit" value="上传头像"/> </form> ``` 其中,`action` 属性指定了上传接口的 URL,`method` 属性指定了请求的方法为 `POST`,`enctype` 属性指定了表单数据的编码方式为 `multipart/form-data`,这样才可以上传文件。 2. 后端上传接口实现 在后端中,需要使用 Spring MVC 的 `MultipartFile` 类来处理上传的文件。代码如下: ```java @Controller public class UploadController { @RequestMapping(value = "/upload", method = RequestMethod.POST) public String upload(@RequestParam("file") MultipartFile file, HttpSession session) throws IOException { // 获取上传的文件名 String fileName = file.getOriginalFilename(); // 获取文件的后缀名 String suffixName = fileName.substring(fileName.lastIndexOf(".")); // 生成新的文件名 String newFileName = UUID.randomUUID().toString() + suffixName; // 保存文件到本地磁盘 File dest = new File("upload/" + newFileName); file.transferTo(dest); // 将文件路径保存到 session 中 session.setAttribute("avatarPath", dest.getAbsolutePath()); return "redirect:/user/profile"; } } ``` 在上传接口中,`@RequestParam("file")` 注解表示接收名为 `file` 的文件参数,`HttpSession` 是用来保存文件路径的对象。首先,获取上传的文件名,并生成新的文件名,然后将文件保存到本地磁盘,最后将文件路径保存到 session 中,以便后续使用。 3. 显示头像 在用户个人信息页面中,可以通过 session 中保存的文件路径来显示用户的头像。代码如下: ```html <img src="${sessionScope.avatarPath}" alt="avatar"> ``` 通过 `${sessionScope.avatarPath}` 取出 session 中保存的文件路径,并将其作为 `src` 属性值赋给 `<img>` 标签,即可显示用户的头像。 以上就是实现 SSM 上传头像功能的步骤。需要注意的是,上传文件时需要对文件进行校验和限制,以保证文件的安全性和上传效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值