当前位置:首页 > 行业动态 > 正文

php 如何输出二进制流

在 PHP 中,可以使用 fwrite() 函数将二进制流输出到文件。以下是一个示例:,,“ php,$binary_data = pack("C*", 0x48, 0x65, 0x6c, 0x6c, 0x6f); // 创建一个二进制流,$file = fopen("output.bin", "wb"); // 以二进制写入模式打开文件,fwrite($file, $binary_data); // 将二进制流写入文件,fclose($file); // 关闭文件,“

在PHP中,我们可以使用fread()函数来读取文件并输出二进制流,以下是一个简单的示例:

php 如何输出二进制流  第1张

<?php
$filename = 'example.jpg'; // 你的文件名
$handle = fopen($filename, "rb"); // 以二进制读模式打开文件
$contents = '';
if ($handle) {
    while (!feof($handle)) {
        $contents .= fread($handle, 8192); // 每次读取8192字节
    }
    fclose($handle);
}
header("ContentType: application/octetstream"); // 设置头信息为二进制流
header("ContentDisposition: attachment; filename=".basename($filename)); // 设置下载的文件名
echo $contents; // 输出二进制流
?>

这段代码首先打开了一个文件,然后使用fread()函数读取文件内容并将其添加到$contents变量中,我们设置了HTTP头信息,告诉浏览器这是一个二进制流,并且应该下载它而不是显示它,我们输出了二进制流。

相关问题与解答:

1、Q: 如果我想从数据库中读取二进制数据并输出,我该怎么做?

A: 你可以使用PHP的PDO或MySQLi扩展来从数据库中查询二进制数据,查询结果将是一个字符串,你可以直接输出这个字符串。

“`php

<?php

$pdo = new PDO(‘mysql:host=localhost;dbname=test’, ‘username’, ‘password’);

$statement = $pdo>prepare(‘SELECT binary_data FROM my_table WHERE id = ?’);

$statement>execute([1]);

$binaryData = $statement>fetchColumn();

header("ContentType: application/octetstream");

header("ContentDisposition: attachment; filename=myfile.bin");

echo $binaryData;

?>

“`

2、Q: 如果我需要在输出二进制流的同时,也输出一些文本信息,我应该怎么做?

A: 你可以在输出二进制流之前或之后,使用echo或print函数输出文本信息,你需要确保在输出二进制流之前,已经设置了正确的HTTP头信息,否则浏览器可能会将你的文本信息也当作二进制数据处理。

“`php

<?php

$filename = ‘example.jpg’;

$handle = fopen($filename, "rb");

$contents = ”;

if ($handle) {

while (!feof($handle)) {

$contents .= fread($handle, 8192);

}

fclose($handle);

}

header("ContentType: application/octetstream");

header("ContentDisposition: attachment; filename=".basename($filename));

echo "This is some text information before the binary data.n";

echo $contents;

echo "This is some text information after the binary data.n";

?>

“`

0