PHP - Base64对大文件进行编码并同步回写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP - Base64对大文件进行编码并同步回写相关的知识,希望对你有一定的参考价值。

我需要使用php对base64编码大文件。 file()和file_get_contents()不是选项,因为它们将整个文件加载到内存中。 我有想法使用它:

$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
        echo $buffer;
    }
    fclose($handle);
}

消息来源:Read and parse contents of very large file

这适合阅读,但是可以这样做: 读取行 - > base64编码 - >写回文件 然后重复文件中的每一行。 如果可以直接执行它而不需要写入临时文件会很好。

答案

Base64在7位安全文本上将3个字节的原始数据编码为4个字节。如果你喂它少于3个字节就会出现填充,你不能在字符串的中间发生这种情况。但是,只要你处理3的倍数,你就是黄金,sooo:

$base_unit = 4096;
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
    while (($buffer = fread($handle, $base_unit*3)) !== false) {
        echo base64_encode($buffer);
    }
    fclose($handle);
}

http://en.wikipedia.org/wiki/Base64#Examples

以上是关于PHP - Base64对大文件进行编码并同步回写的主要内容,如果未能解决你的问题,请参考以下文章

请不要用php进行base64编码文件上传

C# UTF-8 base64 编码在 PHP 中无法正确解码

如何将音频文件转为base64 编码

使用 Javascript 检索二进制文件内容,base64 对其进行编码并使用 Python 对其进行反向解码

php 图片流 转为base64

用PHP对字符串进行Base64编码和解码