Proxy 如何通过代理页面保存正确的文件名

Proxy 如何通过代理页面保存正确的文件名,proxy,filenames,Proxy,Filenames,我是个新手。试图发展我对PHP和JavaScript的知识。这一次我撞了太多次头,寻找答案的时间已经够长了 我正在尝试创建一个代理页面来查看PDF。它起作用了!但当我想保存文件时,它会将自己命名为“proxy.pdf”。在我的Transformer Prime平板电脑上,它下载了脚本:“proxy.php” 这就是我的代理PHP代码的样子: <?php session_start; // define path to image folder $image_folder = realp

我是个新手。试图发展我对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;
        }
    }
}
}
 ?>

当我对我的ASP.NET应用程序提出同样的问题时,我偶然发现了这个问题。使用标题是为我做的。我不会假装是PHP专家,但如果你在其他标题旁边添加这一行,应该可以完成这项工作

header('Content-Disposition: attachment; filename='.$_GET['pic']);