【问题标题】:Download and rename file from Server using php script使用 php 脚本从服务器下载和重命名文件
【发布时间】:2014-06-06 09:25:55
【问题描述】:

我正在存储我的所有文件,例如“8asd98asd9as7d98asd9.file”,并从 mysql 数据库中检索“真实”文件名:id (INT) AI PK, pathOnServer TEXT NOT NULL, realFilename VARCHAR(200) NOT NULL。

我需要一个脚本来访问“www.website.com/getFile?id=2”之类的文件,该脚本会下载文件并将其重命名为“realFilename”。

如何做到这一点?

【问题讨论】:

    标签: php file download rename


    【解决方案1】:

    您可以使用Content-Disposition HTTP 标头告诉浏览器您的文件名,然后使用readfile 加载并回显该文件。

    header("Content-Type: application/octet-stream");
    header('Content-Length: ' . filesize($path));
    $name = basename($path);
    header('Content-Disposition: attachment; filename="' . $name . '"');
    readfile($path); 
    exit;
    

    【讨论】:

      【解决方案2】:

      我相信这段代码会起到你想要的作用

      <?php
      
         if(!is_numeric($_GET['id'])) { // We validate parameter
             echo 'Wrong parameter';
             exit();
         }
      
         $oDb = new mysqli("ip","user","pass","databasename"); // Connecting to database
         if($oDb->connect_errno) { // Check for an error
            echo 'Error';
            exit();
         }
      
         $oResult = $oDb->query('SELECT `pathOnServer`, `realFilename`
                                 FROM --tablename--
                                 WHERE id = '.(int)$_GET['id'].'
                                 LIMIT 1'); // make query
         if($oResult->num_rows != 1) {
             echo 'No file found';
             exit();
         }
      
         $oQuery = $oResult->fetch_object();
         header('Content-disposition: attachment; filename='.$oQuery->realFilename); // put special headers
         readfile($oQuery->pathOnServer.$oQuery->id); // put the file
      ?>
      

      您还可以添加带有文件大小的标题。 希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-20
        • 1970-01-01
        相关资源
        最近更新 更多