0

我的网站要求用户上传指定格式的 xml 文件。所以我想在客户端进行语法和格式检查,并帮助他们在上传到服务器之前修复这些错误。(我不需要更改硬盘上的真实本地文件,只需要更改发送到服务器的数据)我目前使用:

var reader = new FileReader();
reader.onload = function(e) {
  var xml = e.target.result;
  // I help them correct xml here, this will involve lots of interaction with user,
  // so I want it only happen on client side
  var correctXML = fixSyntaxAndFormat(xml);  
  $.post('/foo/bar', {xml: correctXML});
}
reader.readAsText(evt.target.files[0]);

此代码有效,除了它在发布数据中发送 xml 而不是真正上传的文件。因为我想监控文件上传进度并保存其他文件信息,所以我希望可以有类似的东西:oldfile.content = correctXML 然后我可以提交包含我的<input type="file"/>. 这可能吗?还是有“正确”的方法来做到这一点?

谢谢

更新 感谢 austincheney 的示例,我最终创建new Blob()并使用此替换原始文件。似乎工作正常。

4

1 回答 1

0

是的,这是完全可能的,它通常用于协助拖放文件操作。例如,如果您希望用户能够将文件拖放到 textarea 上,您可以将 textarea 设置为拖放区,在该拖放区中,文件的路径会以静默方式传送到输入类型文件元素。我在我自己的网站上这样做。

在http://prettydiff.com/pd.js中检查函数 pd.file 和 pd.filedrop并在我的工具上演示结果http://prettydiff.com/

于 2012-08-29T23:05:18.643 回答