chrome上传图片 路径为c:/fakepath的解决办法

因为浏览器提升了安全级别,默认是不会获取文件的真实路径的,都是用fakepath代替了。

1.可以通过修改浏览器的安全级别,步骤是:工具 -> Internet选项 -> 安全 -> 自定义级别 -> 找到“其他”中的“将本地文件上载至服务器时包含本地目录路径”,选中“启用”即可。
2.以上方法对程序员来说肯定不可取,总不能让每一个用户都修改浏览器配置,网上有一种用js代码修改的方法,但只兼容IE、firefox系列。

function getPath(){  
    var Pathobj = document.getElementById("......");
    if(Pathobj){  
         if (window.navigator.userAgent.indexOf("MSIE")>=1)   {  
             Pathobj.select();  
             return document.selection.createRange().text;  
         }else if(window.navigator.userAgent.indexOf("Firefox")>=1){  
             if(Pathobj.files){  
                   return Pathobj.files.item(0).getAsDataURL();  
             }  
             return Pathobj.value;  
         }  
         return Pathobj.value;  
    }  
}

我的思路是:

在页面增加一个隐藏标签,然后js把url传递给隐藏标签,最后Ajax更改data.field.file的值,再post过去。
 //用于接收正确url的值
data.field.file = document.getElementById("img_url").value;

完整代码:

 // 上传图片处理
        var uploadInst = upload.render({
          elem: '#upload_img' //绑定元素
          ,url: ".." //上传接口
          ,size:50
          ,accept: 'images' //指定允许上传时校验的文件类型
          ,acceptMime: 'image/*'//筛选出的文件类型
          ,before: function(obj){ //选择文件后回调
            obj.preview(function(index, file, result){
              $('#pre_img').attr('src', result); //图片链接(base64),插入用于预览
            });
          }
          ,done: function(res){
              //上传完毕回调
              if(res.code >0){  
                return layer.msg('图片上传失败')
              }
              document.getElementById("img_url").value = res.msg;
          }
          ,error: function(){
              //请求异常回调
              layer.closeAll('loading'); //关闭loading
          }
        });
        //监听提交
        form.on('submit(add)', function(data){
          data.field.file = document.getElementById("img_url").value;
          //发异步,把数据提交给php
         $.ajax({
                url:'./goods_add_function.php',
                data:data.field,
                dataType:'text',
                type:'post',
                success:function (data) {
                  layer.alert("增加成功", {icon: 6},function () {
                  // 获得frame索引
                    var index = parent.layer.getFrameIndex(window.name);
                    //关闭当前frame
                     parent.layer.close(index);
                   });
                }
            })
          return false;
        });

你可能感兴趣的:(chrome上传图片 路径为c:/fakepath的解决办法)