2

我是新手。试图发展我关于 PHP 和 JavaScript 的知识。这一次我已经敲了太多次头,并且搜索了足够长的时间。

我正在尝试创建一个代理页面来查看 PDF。有用!但是当我想保存文件时,它自己命名为“proxy.pdf”。在我的 Transformer Prime 平板电脑上,它会下载脚本:“proxy.php”。

这是我的代理 PHP 代码的样子:

<?php

session_start;

// define path to image folder
$image_folder = realpath(dirname(__FILE__))."/imagefolder/";
// get image name from the query string
// no probe
if (isset($_GET['pic']) && basename($_GET['pic']) == $_GET['pic'])
{   
    $pic = $image_folder.$_GET['pic'];
    if (file_exists($pic) && is_readable($pic)) 
    {
        // get the filename extension
        $ext = substr($pic, -3);
        // set the MIME type
        switch ($ext)
        {
    case 'jpg':
    $mime = 'image/jpeg';
    break;
    case 'gif':
    $mime = 'image/gif';
    break;
    case 'png':
    $mime = 'image/png';
    break;
    case 'pdf':
    //alt octet-stream
    $mime = 'application/pdf';
    break;
    default:
    $mime = false;
    } 
    // if a valid MIME type exists, display the image 
    // by sending appropriate headers and streaming the file
    if ($mime)
    {

        header('Content-type: '.$mime);
        header('Content-length: '.filesize($pic));

        $file = fopen($pic, 'rb');
        if ($file)
        {
            fpassthru($file);
            exit;
        }
    }
}
}
 ?>
4

1 回答 1

0

当我对我的 ASP.NET 应用程序有同样的问题时,我偶然发现了这一点。使用Content-Disposition标头对我来说是这样做的。我不会假装自己是 PHP 专家,但是如果您将此行添加到其他标题旁边,它应该可以完成工作。

header('Content-Disposition: attachment; filename='.$_GET['pic']);
于 2014-02-14T19:34:51.053 回答