如何在jquery中序列化文件类型输入

Ges*_*han 12 forms jquery serialization

以前使用Prototype我可以序列化输入类型文件,它给了我正在上传的文件的文件名但是当我在jquery中序列化表单时,我只得到了输入类型的文本,而其他的不是文件,我该怎么办呢?

Sam*_*son 11

在Firebug花了几分钟之后,实际上有几种方法可以解决这个问题.例如,我能够从fileObject本身获取文件列表:

var file = $("#control").attr("files")[0];
var fileName = file.fileName;
var fileSize = file.fileSize;

alert("Uploading: "+fileName+" @ "+fileSize+"bytes");
Run Code Online (Sandbox Code Playgroud)

显然,我可以读取序列化的值.但写作是另一个问题.

但显然这并不像其他人所说的那么容易.我冒昧地下载了Prototype源代码,无法找到将FileList数据用于File Upload对象的说明.

事实上,我在网上发现了一篇文章,其中列出了序列化文件上传对象本身的问题,声称没有AJAX库做得好(注意,这是在2007年写的).这个主题很有意思,看起来您可以使用任意数量的方法从文件上传中提取数据 - 规范本身包含足够的信息来指导您沿着这条路径前进.

我希望我能够回答你如何编写,并将文件添加到文件列表中,但此刻我和你一样迷失(或者在提出这个问题的时候).有了更多的阅读,这可能比我怀疑要容易得多 - 但目前我没有时间投资.

祝你好运.

相关文件:

  1. W3C上的FileUpload
  2. 表格序列化由加勒特史密斯,2007年
  3. 原型1.6.1RC3来源(第3967行:Form.serializeElements开始)

  • 如果您使用的是jQuery 1.6(或更高版本),则需要使用.prop()而不是.attr()。 (2认同)