从mysql下载文件时出错

时间:2010-09-28 07:29:18

标签: php mysql

您好 我为此尝试了很多源代码,但我在所有这些代码中都有相同的错误

include 'functii.php';
starts();
opendb();
$query = "SELECT content,`title_real`,`size`,`ext` FROM file WHERE file_id = '3'";

$result = mysql_query($query) or die('Error, query failed');
list($content,$filename,$size,$ext) = mysql_fetch_array($result);

header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename=$filename.$ext");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$size);

echo $content;

exit; 

问题是在下载的文件中我有很多来自无处的“\ 0”。 该文件存储在数据库中。我测试了那个。 谢谢

3 个答案:

答案 0 :(得分:0)

这听起来像编码问题。可能是文件以UTF-16编码,您将其显示为ASCII。

答案 1 :(得分:0)

尝试:

header("Content-Disposition: attachment; filename = $filename . '.' . $ext");

而不是:

header("Content-Disposition: attachment; filename=$filename.$ext");

答案 2 :(得分:0)

3件事:

  1. 正如Alexander.Plutov所说,文件名中有错误,应该是 $ filename。'。'。$ ext 你错过了“。”文件名和扩展名之间。
  2. 正如Mark Byers所说,这看起来像编码问题,你应该检查你的PHP文件编码以及你的数据库。
  3. 希望你只存储基于文本的文件,因为,任何其他文件内容绝对不应该存储在数据库中!即使对于基于文本的文件,它也不应该用于此,它根本不是它的用途。
  4. 在文件生成之外的任何其他情况下,文件应存储在您的服务器中,并且可以通过文件路径和名称从您的数据库中调用。