- 今天接到一個需求,前端以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 是以字節爲單位、保留在內存的最大數據量,超過則使用臨時文件。