posts - 28,  comments - 0,  views - 21997
  <label>
         <img src="{{url}}" width="200" id="url" ng-model="pics.url">
  </label>
   <input type="file" accept="image/png, image/jpeg, image/gif, image/jpg" alt="" onchange="angular.element(this).scope().changepic(this)">
   <button class="btn" ng-click="Upload($event)">上传</button>
复制代码
    //重新选择图片的change事件
$scope.changepic = function (obj) { var newsrc = $scope.getObjectURL(obj.files[0]);
//给img元素src赋值 $(obj).siblings(
"label").children("img").attr("src", newsrc); } $scope.getObjectURL = function(file) { var url = null; // 下面函数执行的效果是一样的,只是需要针对不同的浏览器执行不同的 js 函数而已 if (window.createObjectURL != undefined) { // basic url = window.createObjectURL(file); } else if (window.URL != undefined) { // mozilla(firefox) url = window.URL.createObjectURL(file); } else if (window.webkitURL != undefined) { // webkit or chrome url = window.webkitURL.createObjectURL(file); } return url; }
复制代码
 
 
复制代码
   //当上传完了之后需要清空file控件文件域的值 非常关键 再次选择相同图片的时候 因为上一次的值没有清空 选择相同的值就不change事件不会触发 
//导致change事件里面给Img赋值的src就一直为空

$scope.clear = function () {
            $("img").attr("src", "");
            var fildom = '<input type="file" accept="image / png, image / jpeg, image / gif, image / jpg" alt="" onchange="angular.element(this).scope().changepic(this)">';
            //元素替换
$(
"input[type=file").replaceWith(fildom); }
复制代码

 

 

复制代码
  //图片上传方法
$scope.Upload = function (obj) { var file = $(obj.target).siblings("input[type=file]")[0].files; if (file.length==0) { return; } var name = file.name var uploadData = new FormData(); uploadData.append('file', file[0]); $.ajax({ url: '/Helper/UploadImg',//上传接口 type: 'POST', data: uploadData, processData: false, contentType: false, success: function (data) { if (data.errcode == 0) { var time = new Date().getTime(); //用于提供实时随机数 $(obj.target).siblings("label").children("img").attr("src", data.src + "?" + time); } else { layer.msg(data.src, { time: 2000 }) } } }); }
复制代码

 

posted on   FL0528  阅读(250)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示