Javascript 从iframe强制下载pdf文件窗口

Javascript 从iframe强制下载pdf文件窗口,javascript,pdf,iframe,extjs,Javascript,Pdf,Iframe,Extjs,我正在尝试编写一个组件,它允许我通过POST请求下载pdf,最好不用更改站点或打开新窗口 我已经设法通过一个新窗口下载了它,但这并不是我最终所期望的。下面是强制提交到隐藏iframe的代码,但不幸的是,这不会触发文件下载(我猜,浏览器在iframe中处理pdf) 我想知道如何解决这个问题 var iframe = Ext.get('pdfGeneratorIframe'); if(!iframe){ var body = Ext.getBody();

我正在尝试编写一个组件,它允许我通过POST请求下载pdf,最好不用更改站点或打开新窗口

我已经设法通过一个新窗口下载了它,但这并不是我最终所期望的。下面是强制提交到隐藏iframe的代码,但不幸的是,这不会触发文件下载(我猜,浏览器在iframe中处理pdf)

我想知道如何解决这个问题

    var iframe = Ext.get('pdfGeneratorIframe');
    if(!iframe){
        var body = Ext.getBody();

        // create a hidden frame
        iframe = body.createChild({
            tag: 'iframe',
            cls: 'x-hidden',
            id: 'pdfGeneratorIframe',
            name: 'pdfGeneratorIframe'
        });
    }

    var form = Ext.create('Ext.form.Panel', {
        standardSubmit: true,
        url: reportDetails.url,
        method: 'POST'
    });
    form.submit({
        //target: '_blank', // Avoids leaving the page.
        target: 'pdfGeneratorIframe',
        params: {htmlCode: fullHtmlToPrint,
            baseUrl: document.URL,
            filename: reportDetails.filename}
    });

它应该只取决于从服务器返回的http头。“内容处置:附件”应触发浏览器下载

我也这么认为,但在我的控制器中,我已经有了response.setHeader(“内容处置”,“附件;文件名=……response.setContentType”(“application/pdf”);我对一个Excel文件做了类似的操作,它工作了,正如@Saki所说。看。Ext版本是不相关的,因为整个技巧都是返回的http头。你是对的,我的问题是在后端(java)中,我先设置输出流,然后设置头。正确的解决方案是先设置头,然后设置输出流!