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

问题描述:

是否有可能确定用户是否使用javascript/jQuery为特定输入类型=“文件”字段选择了文件?jQuery:如何获得文件上传输入字段的“值”

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

是 - 如果需要,您可以读取该值,甚至可以绑定到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。

+0

欣赏它。没有想到.val()会在文件输入中返回任何东西,我猜应该只是试过了:)多次上传的东西不太符合我这次想要去的方向,尽管通常我同意。再次感谢。 – 2010-07-19 15:11:29

+0

文件输入字段完全可读 - 只是不可写。 – 2010-07-19 15:21:11

上传者已真的很好,我的目的:http://webdeveloperplus.com/jquery/ajax-multiple-file-upload-form-using-jquery/

的好处是用它作为你的编码方式的基准是文件被上传异步,所以没有必要在一个时间限制为20。在用户搜索时做上传有一定的UI优势。

调整大小也是一个不错的功能,如果你需要它!

此代码将从形式除去所有的空文件输入,然后提交:

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/