Magento admin - 如何创建直接文件的下载链接?

时间:2015-03-11 13:29:12

标签: magento

我在./var/label/somefile.pdf中生成了一个PDF文件,我希望在Magento的发货区域(特定于订单)提供访问权限作为链接,但我不确定为标签提供什么路径。当点击开始将文件下载到浏览器时,首选项是链接,我只希望这个链接可以被登录到管理员的人访问。

我尝试过直接路径(http://domain.com/var/label/somefile.pdf),但是它失败并出现访问错误,尝试使用不同版本的getVarDir()无效。

黑客入侵的文件:sales / order / shipment / view / form.phtml

1 个答案:

答案 0 :(得分:0)

如果您需要检查访问者是否已登录管理员,则需要通过Magento控制器。

我假设您了解Magento开发的基础,或者最糟糕的是,有人知道可以帮助您。

首先,编辑(或创建,但您还需要创建路线)控制器扩展 Mage_Adminhtml_Controller_Action 并添加新方法操作 downloadShipmentPdf

const SHIPMENT_PDF_BASE_DIRECTORY = "/var/www/magentorootfolder/var/label/";

public function downloadShipmentPdfAction() {
    $pdfName = $this->getRequest()->getParam('pdf',false);
    if ($pdfName) {
        $pdfContent = file_get_contents(SHIPMENT_PDF_BASE_DIRECTORY . $pdfName . '.pdf')
        if ($pdfContent) {
            $this->getResponse()->setHeader('Content-type', 'application/pdf');
            $this->getResponse()->setBody($pdfContent);
            return;
        }
    }
}

现在,您可以通过调用

为您的PDF生成符合管理员的URL
Mage::helper("adminhtml")->getUrl("modulename/controllername/downloadShipmentPdf", array('pdf' => 'thepdfnamewithoutextension');