【问题标题】:POST text data as file in formPOST 文本数据作为表单中的文件
【发布时间】:2013-04-19 20:43:01
【问题描述】:

是否可以从 html 表单发布一些 XML 数据作为文件输入类型的字符串。

情况是我有一个像

这样的表格
form action="target.php" method="post" enctype="multipart/form-data">
   <input type="file" name="file" id="file"><br>
   <input type="submit" name="submit" value="Submit">
</form>

我的 javascript 代码中有一些 xml 数据作为字符串,我想从表单中发送该字符串,就好像它作为带有文件输入标记的文件上传一样

谢谢

【问题讨论】:

  • 使用 ajax 可以,但不能使用常规表单提交。
  • 是的,我正在寻找 ajax。你能给我一些指示如何用 ajax 做到这一点。谢谢

标签: html file-upload forms http-post


【解决方案1】:

如果您的浏览器支持XMLHttpRequest level 2 和html5 FileApi,您可以执行以下操作

var xhr = new XMLHttpRequest;
var blob = new Blob([xmlString], {type:'text/xml'});
var data = new FormData();
data.append('file', blob, 'filename.xml');
xhr.open('POST',url, true);
xhr.send(data);

如果您的浏览器不支持这些 api,那么您将不得不手动构建您的帖子正文

var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
var boundary = '----'+(new Date()).getTime();
xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary='+boundary);
var data = ['--'+boundary,
    'Content-Disposition: form-data; name="file"; filename="filename.xml"',
    'Content-Type: text/xml','',xmlString,'--'+boundary+'--',''].join('\r\n');
xhr.send(data);

【讨论】:

  • 是的,手动方式效果很好。我已经实现了这种方式。无论如何感谢您的回答:)
猜你喜欢
  • 2019-03-15
  • 2020-10-09
  • 2023-03-30
  • 2018-09-23
  • 1970-01-01
  • 2013-08-05
  • 2016-10-23
  • 2016-04-23
相关资源
最近更新 更多