因为浏览器提升了安全级别,默认是不会获取文件的真实路径的,都是用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;

});

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐