2016-04-15 67 views
-2

我正在谷歌Chrome浏览器中上传文件。如何提取包含“C: fakepath ....”的子字符串

当我尝试使用以下代码提醒输入文件(abc.pdf)的值时,它的格式为C:\fakepath\abc.pdf

var ab = document.getElementById(“myfile”).value;
alert(ab);

所以我尝试以下方法来获取文件输入的值....

  1. 使用split("\\")机制,但没有得到结果。
  2. 试图通过使用lastIndexOf("\\")找出“\”的最后一个索引,但没有找到。

我写了下面的代码片段。但不明白如何继续下一步。
任何建议将不胜感激。

<html> 
<head> 
    <script type="text/javascript"> 
     function show(){ 
      var ab = document.getElementById("myfile").value; 
      alert(ab); 
     } 
    </script> 
</head>  
<body> 
    <form> 
    <input type="file" name="myfile" id="myfile" value="" onchange="show()"/> 
    <input type="button" name="submit" value="submit"> 
    </form> 
</body> 
</html> 

回答

1

C:\fakepath\仅仅是一个为安全起见,加入由浏览器时,实际值被发布到服务器andshouldn't存在的东西。

如果你想更换它们显示在您的alert()调用(或其他目的),你可以只尝试通过replace()调用替换它:

// This should strip off 'C:\fakepath\' from your file path 
var ab = document.getElementById("myfile").value.replace('C:\\fakepath\\',''); 
alert(ab); 

下面你可以看到一个完整的工作示例(只需添加一个文件):

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width"> 
 
    <title>Fakepath Eraser Pro</title> 
 
</head> 
 
<body> 
 
    <input type='file' onchange='alert(this.value.replace("C:\\fakepath\\",""))' /> 
 
</body> 
 
</html>

+0

是的..它工作正常@Rion。谢谢。 –

0

你可以试试更换吗?

var ab = document.getElementById("myfile").value.replace(/C:\\fakepath\\/i, ''); 
0

“\” 是一个SP特殊的性格,它必须在字符串中逃脱才能正常工作。

var path = "C:\\fakepath\\abc.pdf"; 
var array = path.split("\\"); 
console.log(array[array.length-1]); 
// output will be "abc.pdf" 
+0

如何为我获得的值添加额外的“\”?浏览文件时我收到了这个值。 –

相关问题