【问题标题】:Reading uploaded file path with jquery用jquery读取上传的文件路径
【发布时间】:2011-01-24 20:40:58
【问题描述】:

我有一个上传字段,我想用 jquery 读取用户输入

我的html是这样的

<input type="hidden" id="MAX_FILE_SIZE" value="1999500" name="MAX_FILE_SIZE">
<input type="file" id="upl-0" name="upl[]">
<input type="file" id="upl-1" name="upl[]">
<input type="file" id="upl-2" name="upl[]">

在我的 jQuery 中,我这样做了

var paths = '';
$('input[type=file]').each(function(){
    paths = paths + $(this).val();
});    
alert(paths);

但我只得到文件名,而不是完整路径。当我选择C:/folder/file.doc 时,我只得到file.doc。我正在尝试让此路径在表单尝试失败时再次填充该字段,而无需用户重新选择文件,因此我需要完整路径才能使其正常工作。我怎样才能得到它?

【问题讨论】:

标签: javascript jquery forms file-upload


【解决方案1】:

一般来说,你不能。如果您可以捕获完整路径名并(重新)填充上传 (file) 字段的值(或其他) 使用 JavaScript 的文件名。

恶意网站可以在用户不知情的情况下执行此操作,并从某人的计算机上传(实际上是窃取)文件。

在多个浏览器中可能有解决此问题的方法(例如,使用一些 ActiveXObject),但这些方法并未得到广泛支持(并且较新的浏览器倾向于阻止此类操作)。

【讨论】:

  • 上传字段太痛苦了。如果不完全使用 ajax,它们就不可能拥有用户友好的表单。
  • @jblue:“使用 ajax”到底是什么意思?通常,您无法在 JavaScript 中访问本地文件,无论您是在表单中使用“标准”文件输入字段,还是自己构建一个并使用 XMLHttpRequest 发送文件。使用File API,您可以做更多事情,但它尚未得到广泛支持。
  • 好吧,那真是太糟糕了。因此,如果用户提交的表单缺少必填字段,除了更正缺少的必填字段中的错误外,我总是必须要求用户重新选择文件。我敢肯定,用户必须重新导航并重新选择他们想要上传的所有文件。
  • @jblue:这就是渐进增强出现的地方:如果用户启用了 JavaScript(启用),则可以验证表单在发送到服务器之前,然后中止表单(和文件)上传。如果 JavaScript 被禁用(甚至被规避),您必须在服务器端进行验证,并且您可以调整返回的表单,例如一个选择框和刚刚上传的文件的文件名(因为如果发送表单,无论如何都会发生这种情况),因此用户不需要重新上传文件。
猜你喜欢
  • 1970-01-01
  • 2018-12-11
  • 2012-05-13
  • 1970-01-01
  • 2019-12-11
  • 2012-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多