【问题标题】:file upload from a new window opened using javascript does nothing从使用 javascript 打开的新窗口上传文件什么都不做
【发布时间】:2014-12-14 11:46:42
【问题描述】:

我有一个客户端 javascript 应用程序。在特定触发时,应用程序使用 window.open() 创建一个新窗口。在新窗口中,我想允许用户上传文件。为此,我在新窗口中提供了一个表格。表单相当简单——一个“文件”类型的输入元素和一个提交按钮。当用户单击第一个元素时,弹出窗口正确显示以允许从本地文件系统中选择文件。用户选择文件后,当我单击提交按钮时,窗口只是空白;文件内容不会上传到服务器。服务器是使用端口号的专有服务器,一些专有端口号(比如 30000)用于与客户端的 http 会话。 如果我在原始窗口中使用相同的 javascript(即不打开新窗口),文件内容将被发布,并且我看到服务器接收文件内容。但是如果在新窗口中执行,什么都不会发生。脚本(此功能所需的核心部分)如下。

myWin = window.open("", "", "width=400, height=400,scrollbars=yes, resizable=yes");

var myForm     = myWin.document.createElement("form");
myForm.action  = "";
myForm.method  = "post";
myForm.enctype = "multipart/form-data";
myWin.document.body.appendChild(myForm);

var myInp = myWin.document.createElement("input");
myInp.type = "file";
myInp.name = "filename";
myForm.appendChild(myInp);

var myBtn = myWin.document.createElement("input");
myBtn.type    = "submit";
myBtn.value   = "Upload";
myBtn.onclick = "Upload";
myForm.appendChild(myBtn);

知道有什么问题吗?我需要对新窗口进行任何其他设置吗?我怀疑可能是新窗口没有上传,因为打开新窗口时没有维护同源策略 - 也许专有端口号没有从第一个窗口复制到第二个窗口;但是 - 我不确定;即使我是我也不知道如何解决这个问题。我将不胜感激任何帮助。谢谢。

【问题讨论】:

    标签: javascript forms post file-upload new-window


    【解决方案1】:

    您正在打开一个没有 URL 的空白窗口。此外,您将表单上的操作设置为空白,这意味着将表单提交到同一页面。

    在弹出窗口中有一个空白 URL,没有要提交的页面,所以表单无处可去。

    尝试以下方法之一:

    1. 将操作字符串设置为您要将表单提交到的实际页面(这不受跨域控制)。示例:<form action="submit.php">

    2. 通过实际打开包含表单的页面而不是使用 JavaScript 创建它来设置弹出窗口的 URL。它将具有相同的外观/大小,但会正确提交。确保您在该页面上处理表单提交(如果是 PHP 或 ASP),或正确设置操作(如前所述)

    【讨论】:

      猜你喜欢
      • 2013-09-24
      • 2015-11-29
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      相关资源
      最近更新 更多