如何提取包含“C:\ fakepath ....”的子字符串

时间:2016-04-15 14:12:57

标签: javascript file-upload

我正在Google Chrome浏览器中上传文件。

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

  

var ab = document.getElementById(“myfile”)。value;
              警报(AB);

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

  1. 使用split("\\")机制,但没有得到结果。
  2. 尝试使用lastIndexOf("\\")查找“\”的最后一个索引,但没找到。
  3. 我编写了以下代码段。但无法理解下一步如何进行 任何建议都将受到高度赞赏。

    <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>
    

3 个答案:

答案 0 :(得分:2)

C:\fakepath\只是浏览器为了安全目的而添加的内容,并且在将实际值发布到服务器时不会出现。

如果您想更换它们以便在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>

答案 1 :(得分:0)

您可以尝试替换吗?

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

答案 2 :(得分:0)

&#34; \&#34;是一个特殊字符,它必须以字符串形式转义才能正常工作。

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