1

我正在尝试使用 jQuery 和 PHP 上传图像。我知道有很多插件解决方案,但我正在使用它。我可以毫无问题地将文件上传到服务器,但对于我的生活,我无法弄清楚如何获取文件名,以便我可以显示图像。有没有办法从我发布到的 iframe 中获取文件名?这是我正在使用的代码:

jQuery

$('#file').change(function()
{ 
    var iframe = $('<iframe name="postiframe" id="postiframe" style="display:none" />');
    $("body").append(iframe);
    var form = $('#form');
    form.attr("action", "../hub.php?handler=add_item");
    form.attr("method", "post");
    form.attr("enctype", "multipart/form-data");
    form.attr("encoding", "multipart/form-data");
    form.attr("target", "postiframe");
    form.attr("file", $('#file').val());
    form.submit();
    $("#postiframe").load(function()
    {
        iframeContents=$("#postiframe")[0].contentWindow.document.body.innerHTML;
        console.log('added : '+iframeContents);                     
    });    
});

上面的代码只输出“添加:”部分。任何帮助是极大的赞赏 :)

4

2 回答 2

1

上传完成后,您必须从服务器echo/ printthefilename或从服务器(最好是在您发布到 an 时),这样您就可以像在您的问题代码中一样使用 Javascript 获取它。pathtext/HTMLiframe

iframeContents=$("#postiframe")[0].contentWindow.document.body.innerHTML;
console.log('added : '+iframeContents);

您也可以编写一个新的 JS 请求,通过 Ajax 将上传的图像获取到一个新的 PHP(echo例如 JSON),但如果您只想获取该表单提交中的上传文件,则不需要它。

于 2012-08-11T22:10:31.347 回答
0

您可以使用window.name技术将一些字符串数据从 iframe 传递到主窗口。使用的简短示例:

框架:

//doing your stuff, when finished store what you need in window.name property
window.name = '{"key1":"mydata1","key2":"mydata2"}'
window.location.href='about:blank';

主窗口:

$(iframe).bind('load',function(){
    //triggered every time iframe's location is changed
    var iframe_data = this.contentWindow.name;
    if(!iframe_data.length) {
      //it's a first time iframe loaded
      return;
     }
    else{
      //iframe location is changed, we're expecting to receive some data
      $(this).unbind('load');
      console.log($.parseJSON(iframe_data));
      //{"key1":"mydata1","key2":"mydata2"}
    }

})

即使 iframe 放置在另一个来源(域),它也应该可以工作。我没有专门测试这段代码,但它应该可以工作,我从我的一个项目中复制粘贴它

于 2012-08-11T22:36:29.483 回答