【问题标题】:Upload file using iFrame for IE9使用 IE9 的 iFrame 上传文件
【发布时间】:2013-11-08 12:05:47
【问题描述】:

HTML:

<form id="formLogo">
<input type="file" id="logo" name="logo" accept="image/x-png, image/gif, image/jpeg" />
</form>

javascript:

  var myForm = new FormData();
  myForm .append("file", $("#logo").files[0]);
  myForm .append("type", "company");
  myForm .append("accountId", "3124234");
  $.ajax({
      url: '/efrcetrdmbo/app/file/upload',
      data: myFormData,
      dataType: 'text',
      processData: false,
      contentType: false,
      type: 'POST',
      success: function (data) {
          alert("sucess");
      }
  });

IE9 不支持FormData。我想用 iFrame 来上传文件和其他一些数据。

【问题讨论】:

  • 太宽泛了。您实际上是在要求为您提供实现吗?有很多例子,你自己检查一下。
  • 如果我对实施有正确的解释,则需要发布一个问题。如果你知道的话,请指出一些例子。

标签: javascript html json iframe internet-explorer-9


【解决方案1】:

不是在 html 中使用 iframe,而是在上传之前创建它而不是删除。

提供正确的url,上传文件。

JS:

function fileUpload(form, action_url) {
    var iframe = document.createElement("iframe");
    iframe.setAttribute("id", "frame");
    iframe.setAttribute("name", "frame");
    iframe.setAttribute("width", "0");
    iframe.setAttribute("height", "0");
    iframe.setAttribute("frameborder", "0");

    form.parentNode.appendChild(iframe);

    iframeId = document.getElementById("frame");

    var eventHandler = function () {

        if (iframeId.detachEvent) iframeId.detachEvent("onload", eventHandler);
        else iframeId.removeEventListener("load", eventHandler, false);

        if (iframeId.contentDocument) {
            content = iframeId.contentDocument.body.innerHTML;
        } else if (iframeId.contentWindow) {
            content = iframeId.contentWindow.document.body.innerHTML;
        } else if (iframeId.document) {
            content = iframeId.document.body.innerHTML;
        }

        setTimeout('iframeId.parentNode.removeChild(iframeId)', 200);
    }

    if (iframeId.addEventListener) iframeId.addEventListener("load", eventHandler, true);
    if (iframeId.attachEvent) iframeId.attachEvent("onload", eventHandler);

    form.setAttribute("target", "frame");
    form.setAttribute("action", action_url);
    form.setAttribute("method", "post");

    form.submit();
}

HTML:

<form>
    <input type="file" name="file" /></br>
    <input type="button" value="upload" onClick="fileUpload(this.form,'url'); return false;" >
</form>

【讨论】:

    猜你喜欢
    • 2015-01-16
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    相关资源
    最近更新 更多