我在angularJS中有一个函数,我需要在上传时获取文件的路径。这是代码
$scope.uploadFile = function (element) {
$scope.filetemplate = false;
$scope.spinround2 = true;
var filename = event.target.files[0].name;
var filepath = event.target.value;
}
问题是我将文件路径作为c:/ fakepath,即使我尝试从任何驱动器中检索文件。有人可以为此提供解决方案。
答案 0 :(得分:0)
出于明显的安全原因,浏览器不会公开本地文件路径。
来自HTML5文档:
由于历史原因,
value
IDL属性在文件名前面加上字符串"C:\fakepath\"
。某些旧版用户代理实际上包含完整路径(这是一个安全漏洞)。因此,以向后兼容的方式从value
IDL属性获取文件名是非常重要的。以下函数以适当的兼容方式提取文件名:function extractFilename(path) { if (path.substr(0, 12) == "C:\\fakepath\\") return path.substr(12); // modern browser var x; x = path.lastIndexOf('/'); if (x >= 0) // Unix-based path return path.substr(x+1); x = path.lastIndexOf('\\'); if (x >= 0) // Windows-based path return path.substr(x+1); return path; // just the file name }
可以使用如下:
<p><input type=file name=image onchange="updateFilename(this.value)"></p> <p>The name of the file you picked is: <span id="filename">(none)</span></p> <script> function updateFilename(path) { var name = extractFilename(path); document.getElementById('filename').textContent = name; } </script>
— HTML Living Standard - The definition of
<input type="file">