使用php脚本从服务器下载并重命名文件

使用php脚本从服务器下载并重命名文件,php,file,download,rename,Php,File,Download,Rename,我正在存储我的所有文件,如“8asd98asd9as7d98asd9.file”,并从mysql数据库中重新查看“real”文件名:id(INT)AI PK,pathnserver TEXT NOT NULL,realFilename VARCHAR(200)NOT NULL 我需要一个脚本,它允许我访问像“www.website.com/getFile?id=2”这样的文件,下载文件并将其重命名为“realFilename” 如何做到这一点?您可以使用HTTP头告诉浏览器文件名,然后使用加载和

我正在存储我的所有文件,如“8asd98asd9as7d98asd9.file”,并从mysql数据库中重新查看“real”文件名:id(INT)AI PK,pathnserver TEXT NOT NULL,realFilename VARCHAR(200)NOT NULL

我需要一个脚本,它允许我访问像“www.website.com/getFile?id=2”这样的文件,下载文件并将其重命名为“realFilename”

如何做到这一点?

您可以使用HTTP头告诉浏览器文件名,然后使用加载和回显所述文件

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

我相信这段代码会帮你找到一个窍门

<?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
?>

您还可以添加带有filesize的标题。 希望它能帮助你