我需要使用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编码 - >写回文件
然后重复文件中的每一行
如果可以直接执行它而不需要写入临时文件会很好。
答案 0 :(得分:2)
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);
}