Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 下载脚本有些奇怪_Php_Mysql_Excel - Fatal编程技术网

Php 下载脚本有些奇怪

Php 下载脚本有些奇怪,php,mysql,excel,Php,Mysql,Excel,你好 只是下载脚本有问题。现在的问题是,每当我试图下载一个文件时,都是download.php获取的,而不是MS Excel文件本身。虽然在下载过程中,它显示了图标,甚至我试图下载的文件是excel格式的应用程序。但我不明白的是,我一下载它,它就会变成一个空的download.php <?php if(isset($_GET['id'])) { $id = $_GET['id']; $query = "SELECT file_name, file_type, file_si

你好

只是下载脚本有问题。现在的问题是,每当我试图下载一个文件时,都是download.php获取的,而不是MS Excel文件本身。虽然在下载过程中,它显示了图标,甚至我试图下载的文件是excel格式的应用程序。但我不明白的是,我一下载它,它就会变成一个空的download.php

<?php

if(isset($_GET['id'])) 
{

 $id    = $_GET['id'];
 $query = "SELECT file_name, file_type, file_size, content 
 FROM upload WHERE upload_id = '$id'";
 $result = mysql_query($query) or die('Error, query failed');
 list($name, $type, $size, $content) = mysql_fetch_array($result);
 header("Content-length: $size");
 header("Content-type: $type");
 header("Content-Disposition: attachment; filename=$name");
 ob_clean();
 flush();
 echo $content;
 mysql_close();
 exit;
 }


?>
以下是我调用下载的代码:

<?php 

    $up = mysql_query("SELECT * FROM upload");

            $CountRow=0;
            while($cr = mysql_fetch_array($up))
                {       
                echo "<div style='float:left; '>";  
                echo "<p style='padding:5px; margin:5px; border:1px solid #ccc; '>";

                echo "<a href='rental/download.php?id=".$cr['upload_id']."'><img src='images/icon.png'> </a>"." "."<a href='download.php?id=".$cr['upload_id']."'>".$cr['file_name']."  "."</a>";
                echo "</p>";
                echo "</div>";          
                }

            $CountRow++;

?>
这是download.php

<?php

if(isset($_GET['id'])) 
{

 $id    = $_GET['id'];
 $query = "SELECT file_name, file_type, file_size, content 
 FROM upload WHERE upload_id = '$id'";
 $result = mysql_query($query) or die('Error, query failed');
 list($name, $type, $size, $content) = mysql_fetch_array($result);
 header("Content-length: $size");
 header("Content-type: $type");
 header("Content-Disposition: attachment; filename=$name");
 ob_clean();
 flush();
 echo $content;
 mysql_close();
 exit;
 }


?>
我该怎么办?我想知道出了什么问题……

使用标题的内容配置:附件;文件名='$姓名

此外,尝试使用单引号和串联字符串,而不是双引号。双引号类似于eval,如果您真的不需要,则不建议使用双引号


另外,将PDO用于数据库访问,或者至少使用mysqli,并在将输入包含到SQL查询之前对其进行清理。或者“download.php?id=1”;删除表格用户;-我会抓住你的

将文件名更改为文件名使用标题内容处置:附件;filename=$name;谢谢你的帮助。我试图更改代码,但到目前为止它确实下载了该文件。但我遇到了另一个问题。下载过程完成后,文件将自动打开,当您检查下载文件夹或存储文件的任何文件夹时,文件似乎不在任何地方,好像没有下载过。我缺少什么吗?这是你浏览器的一个功能。有些会尝试自动打开。尝试右键单击并另存为以下载到磁盘。也可以尝试不同的浏览器,看看有什么不同。我接受了你的建议。这一次我用谷歌浏览器看看它是否工作正常。它确实保存了,但文件没有显示excel的图标,而只是一个纸质图标。当我试图打开它时,什么也没发生。firefox也是如此。这是我下载它时的样子。纸质图标是我检查保存它的文件夹时的样子。数据库中文件名的值是多少?它需要有正确的Excel扩展名,并且该扩展名需要与Excel关联才能工作。