是否可以更改html<输入>文件

Is it possible to change content of html <input> file with javascript?

本文关键字:lt gt 文件 输入 html 是否      更新时间:2023-09-26

我的网站要求用户上传指定格式的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]);

这段代码是有效的,只是它在post数据中发送xml,而不是真正上传的文件。因为我想监控文件上传进度并保存其他文件信息,所以我希望可以有这样的东西:oldfile.content = correctXML那么我可以提交包含我的<input type="file"/>的表格。这样做可能吗?或者有"正确"的方法吗?

感谢

更新感谢austincheney的例子,我最终创建了new Blob(),并使用它来替换原始文件。看起来工作不错。

是的,这是完全可能的,通常用于帮助进行拖放文件操作。例如,如果您希望用户能够将文件拖放到文本区域,您可以将文本区域设置为一个拖放区域,在该区域中,文件的路径将以静默方式提供给输入类型文件元素。我在自己的网站上做这件事。

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