jQuery:如何获取文件上传输入字段的“值”

Posted

技术标签:

【中文标题】jQuery:如何获取文件上传输入字段的“值”【英文标题】:jQuery: how to get "value" of file upload input field 【发布时间】:2011-03-17 23:03:36 【问题描述】:

是否可以确定用户是否使用 javascript/jQuery 为特定输入 type="file" 字段选择了文件?

我为 ExpressionEngine(基于 php 的 CMS)开发了一个自定义字段类型,允许用户在 Amazon S3 上上传和存储他们的文件,但最流行的 EE 托管服务将 max_file_uploads 限制设置为 20。我想允许用户上传 20 个文件,再次编辑条目以添加 20 个等。不幸的是,在编辑条目时,最初的 20 个文件有一个“替换此图像”文件输入字段,这似乎消除了上传新图像的可能性。我想在提交表单时通过 javascript 删除所有未使用的文件输入字段。

【问题讨论】:

【参考方案1】:

这个上传器非常适合我的目的:http://webdeveloperplus.com/jquery/ajax-multiple-file-upload-form-using-jquery/

使用它作为编码基础的好处是文件是异步上传的,因此一次无需限制为 20 个。在用户搜索时进行上传有明确的 UI 优势。

如果您需要,调整大小也是一个非常不错的功能!

【讨论】:

【参考方案2】:

是的 - 如果需要,您可以读取该值,甚至可以绑定到 change 事件。

<html>
<head>
  <title>Test Page</title>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <script type="text/javascript">
  $(function()
  
    $('#tester').change( function()
    
      console.log( $(this).val() );
    );
  );
  </script>
</head>

<body>

<input type="file" id="tester" />

</body>
</html>

但还有其他的多上传解决方案可能更适合您的需求,例如 bpeterson76 张贴。

【讨论】:

欣赏它。没想到 .val() 会在文件输入上返回任何内容,我想我应该尝试一下 :) 多次上传的东西与我这次想要去的方向不太一致,尽管通常我同意。再次感谢。 文件输入字段完全可读 - 只是不可写。【参考方案3】:

此代码将从表单中删除所有空文件输入,然后提交:

HTML:

<form action="#">
  <input type="file" name="file1" /><br />
  <input type="file" name="file2" /><br />
  <input type="file" name="file3" /><br />
  <input type="file" name="file4" /><br />
  <input type="file" name="file5" /><br />

  <input type="submit" value="Submit" />
</form>

JavaScript:

$(function() 
  $("form").submit(function()
    $("input:file", this).filter(function()
      return ($(this).val().length == 0);
    ).remove();
  );
);

示例: http://jsbin.com/axuka3/

【讨论】:

以上是关于jQuery:如何获取文件上传输入字段的“值”的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 获取上传输入的“值”

当用户在输入字段中输入数据时,如何从车把页面获取 jquery 中的输入文本值?

jQuery验证插件清除IE中的文件输入值

如何从输入字段中获取数字值?

如何在上传之前获取文件名并在没有 fakepath 的情况下传递到另一个文本输入字段

使用jquery.form.js提交表单上传文件