【问题标题】:open downloading file in new window or tab在新窗口或标签中打开下载文件
【发布时间】:2013-11-03 03:22:27
【问题描述】:

我正在做一个 joomla 组件编程。我需要在新标签中打开我的下载文件。文件下载代码为:

<meta http-equiv="Refresh" content="3;URL=http://localhost/joomla/images/uploads/<?php echo $filee; ?> " >

我使用此代码而不是header("Content-Disposition: attachment; filename=".$filee.""); 是因为我需要在表单提交和开始下载之间的页面上显示一些消息。标头不允许这样做。

下载可以很好地与 meta 一起使用,但不是在当前窗口中打开文件,而是如何在新选项卡中打开它。?? 我尝试在此元标记之前给出带有 target=_blank 的表单标记,但没有用。

【问题讨论】:

  • 使用 Joomla,我不会使用元标记来下载文件。下载是从表单还是按钮生成的?
  • @Lodder:是的,先生。用户只有在填写表格后才能下载任何文件。我使用 if 条件来检查表单是否提交。然后在里面我写了一些感谢信息和上面的下载元代码。
  • 提交表单后,将用户重定向到下载文件,不要使用元标记
  • 我使用这个代码先生 echo '

标签: php joomla download joomla2.5 meta-tags


【解决方案1】:

您要在新窗口或标签中打开的唯一方法是删除重定向并在感谢页面上添加指向该文件的链接,并使用 target="_blank"。

【讨论】:

  • 感谢您的回复先生。但我需要开始下载自动显示消息。我该怎么做?
  • 您上面评论中的 javascript 是唯一可行的方法。
【解决方案2】:

经过多次搜索,我通过四步将请求重定向到其他页面后,实现了在新窗口中下载pdf文件的想法-

1). Session::flash('myfileNameThatStoredInDb',  $orders->order_invoice);

2)。使用以下代码在控制器中创建一个函数

public function pdfDownload($image_url){

        header('Content-Type: application/octet-stream');
        header("Content-Transfer-Encoding: Binary");
        header("Content-disposition: attachment; filename=\"" . basename($image_url) . "\"");
        readfile(\Url('storage').'/invoice'.'/'.$image_url); 
    }

3)。为上述方法创建路由。

Route::get('/pdfdownload/{url}',"OrderController@pdfDownload");

4)。检查 Session 并在 html 文件标签中获取其值并将其附加到控制器的方法路径

@if(Session::has('download.in.the.next.request'))    
        <meta http-equiv="refresh" content="5; url={{ asset('pdfdownload/'.Session::get('download.in.the.next.request')) }}">
    @endif

注意-> 这段代码在 Laravel 中运行良好,我的目的只是提供一个想法。 谢谢

【讨论】:

    猜你喜欢
    • 2012-08-09
    • 2012-09-01
    • 2014-12-12
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 2015-07-14
    • 2011-07-05
    相关资源
    最近更新 更多