浏览器为了保护客户隐私安全,会将上传文件的路径替换成c:/fakepath,目前有一下解决方法:
一、通过修改浏览器的安全设置:
工具=>Internet选项=>安全=>自定义级别==>找到“其他=>基于内容打开文件,而不是基于文件扩展名”,选择[禁用]即可
但是作为一个开发者,我们不能要求客户去这么干,所以需要在编写代码的时候解决这个问题。所以有第二种方式
二、在js中控制,获得全路径:
document.getElementById("fileId").select();//选中页面中的文件路径
var realPath = document.selection.createRange().text;//取得选中的文件路径
这个要求页面有文件路径显示出来,如果使用了某个按钮调用文件选择,则无法获得全路径,如下
jsp页面:
<input type="button" value="间接获得文件" id="toGetFile" class="button" onClick="getFileByButton();" >
<input type="file" id="fileId" name="fileName" style="position:absolute;display:none;" size="1" hidefocus/>
js方法:
function getFileByButton(){
var fileId=document.getElementById("fileId");
fileId.click();
var path = fileId.value();
}
如果是这种间接调用到就无法获得文件真实的全路径,就只能使用第一种方式。