【问题标题】:Find Path of File to be Uploaded查找要上传的文件路径
【发布时间】:2009-10-27 15:30:43
【问题描述】:

我想知道用户将要使用我的表单上传的某些文件的路径。我知道出于安全原因不允许使用 JavaScript,但我正在构建的系统是员工的内部系统。是否有 JavaScript 证书或我可以在我们的服务器上放置的东西来说明我可以做到这一点?就像 Flash 允许策略文件一样。

我有一个快速的谷歌,找不到像上面的任何东西。我有哪些选择?我的意思是如何获得即将上传的文件的路径,我将采取任何形式的实现想法来克服这个问题。如果我找不到解决方案,那么我正在尝试构建的东西确实是buggered

我想过让用户上传一个包含这些路径的文本文件,但这并不完全是用户友好的。

谢谢大家

【问题讨论】:

    标签: javascript html security


    【解决方案1】:

    获取上传的路径就可以了,但是不能更改...

    var fil = document.getElementById("FileUpload1");
    alert(fil.value); // will show file name
    

    【讨论】:

    • @Abs:这取决于。有关 IE 的可能解决方案,请参阅 MSDN 文档:msdn.microsoft.com/en-us/library/ms535128(VS.85).aspx
    • 我明白了,所以在低安全性下它可以工作 - 刚刚尝试了 Blakewell 的答案,我相信 Josh 现在可以工作。嗯,这可能是最好的解决方案,除非有人想出另一个主意!这个会起作用,但这是工作人员必须记住要做的一个额外的事实......
    • @Abs:您应该能够通过 Active Directory 或类似的方式在您的组安全策略中指定 Intranet 区域的安全设置 - 我不是 Windows 系统管理员,但我知道这种设置更改应该从一个中心位置进行部署,而不是让个人进行更改。
    • 需要考虑的事情:我不是 100% 确定,但我相信发布的文件只包含文件名(而不是路径)。所以你可以做的是,在你的表单提交事件中,你可以使用 Javascript 获取文件值并将其放入隐藏字段以提交给服务器。
    • 问题是无法在所有浏览器中引用该值(完整路径)。
    【解决方案2】:

    为什么不打开 OpenDialog 框?这适用于 IE,因为您在内部工作,所以您可以指定它。

    <html>
    <head>
    <script>
    function attachFile(){
      document.forms[0]['file'].click();
      document.getElementById("FileOP").innerHTML += "<br />"+document.forms[0]['file'].value;
      return;
    }
    </script>
    </head>
    <body>
    <form style="margin: 0px; padding: 0px;">
    <input type="file" name="file" style="display: none" />
    </form>
    
    <a href="javascript:attachFile()">Attach File</a>
    <br />
    <div id="FileOP">
    </div>
    </body>
    </html>
    

    【讨论】:

    • 对我来说这返回了“C:\fakepath\test.php”?在 IE8、Windows Vista 上。
    • 您是否“允许被阻止的内容”?解决此问题后,您可以将您的页面创建为“受信任的站点”以忽略此消息。
    • 另外,你选择了什么文件?如果您选择了“test.php”,那么 OpenFileDialog 将解析为。
    【解决方案3】:

    也许您可以使用浏览器扩展程序。你在 Firefox 中克服了 XUL 的许多限制

    【讨论】:

    • 这可能是一个选项,但我将不得不对员工施加限制,使其只能使用 FF 浏览器。
    • 你也可以为 IE 做扩展,我猜是为 Opera 和最终为 Chrome 做的,但那会打开另一个蠕虫罐,我明白你的意思......
    • 是的,我希望问题得到解决,但不是到那个程度。谢谢你的建议,至少我现在有选择了。
    【解决方案4】:

    如果您对浏览器扩展开放,您可能想看看Google Gears 是否允许这样做。它适用于大多数浏览器和平台。

    【讨论】:

      【解决方案5】:

      JavaScript 以这种方式设计是有原因的。它可以防止远程系统窥探用户。否则将是一个严重的安全问题。

      如果您确实需要查看本地文件系统,则必须使用 Java。

      【讨论】:

      • 请注意:我说过这是员工的内部系统。
      • 这并不能改变事实。
      • 我在上面发表评论的原因是让你知道我知道文件路径没有被遗漏的原因,正如我在我的问题中所说的那样。
      猜你喜欢
      • 2016-12-02
      • 2012-02-25
      • 2019-10-21
      • 2010-11-20
      • 1970-01-01
      • 2012-07-01
      • 2014-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多