使用PHP标头输出二进制数据

时间:2016-04-13 07:06:10

标签: php header binary

我在使用PHP的标题输出二进制数据时遇到问题,无法找出原因,请你帮忙吗?

(表格)               

<form action="upload.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

(PHP脚本)

<?php

require_once "connection.php";

$pic = $_FILES['fileToUpload'];

$pic_info = getimagesize($pic['tmp_name']);
$pic_mime_type = $pic_info['mime'];
$pic_data = file_get_contents($pic['tmp_name']);
$pic_size = $pic['size'];

header("Content-type: " . $pic_mime);
header("Content-length: " . $pic_size);

echo $pic_data;
?>

脚本的输出只是一个空的,你能帮忙吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

您正在使用

header("Content-type: " . $pic_mime);

而不是

header("Content-type: " . $pic_mime_type);

并确保connection.php不输出任何内容,因为它在发送标头之前进行了解析。
http://www.php.net/manual/function.header.php

connection.php 的示例 的

<html>
<?php
echo 'foo';
?>

不可

<?php
$result = 'bar';
  • 没有HTML代码(或打开<?php代码之前的任何其他内容)
  • 没有echo(或print,或print_f,或任何发送数据的内容)
  • 没有关闭?>标记(因此没有意外的空格)

另请查看How to fix "Headers already sent" error in PHP