- 今天接到一个需求,前端以base64形式上传图片,php在接受到base64内容需要判断文件的类型。
- 对于文件PHP提供了一个函数来获取文件的mime类型
mime_content_type
,但是现在接受到的是base64类型,官方没有提供方法。官方提供了文件流的操作,则可以将base64转成文件,再获取文件的mime.示例如下:
$file = public_path('1.jpeg');
$aa = base64_encode(file_get_contents($file));
$bb = base64_decode($aa);
// $fc = iconv('windows-1250', 'utf-8', $aa);
$handle=fopen("php://temp", "rw");
fwrite($handle, $bb);
fseek($handle, 0);
echo mime_content_type($handle);
php://stdin, php://stdout 和 php://stderr
php://stdin 是只读的, php://stdout 和 php://stderr 是只写的。
php://output
php://output 是一个只写的数据流, 允许你以 print 和 echo 一样的方式 写入到输出缓冲区。
php://memory 和 php://temp
php://memory 和 php://temp 是一个类似文件 包装器的数据流,允许读写临时数据。 两者的唯一区别是 php://memory 总是把数据储存在内存中, 而 php://temp 会在内存量达到预定义的限制后(默认是 2MB)存入临时文件中。 临时文件位置的决定和 sys_get_temp_dir() 的方式一致。
php://temp 的内存限制可通过添加 /maxmemory:NN 来控制,NN 是以字节为单位、保留在内存的最大数据量,超过则使用临时文件。