如何从';php://input';在PHP中


How to get the mime content type from 'php://input' in PHP

图像被放置在一个区域上,然后必须自动保存在服务器上。

图像被发送并抛出AJAX请求。

我想从服务器端检查mime类型,以确保我不会保存任何不安全的内容。

标头并不是真正的解决方案,因为它们来自客户端,所以可以更改。

PHP

我收到这样的文件:

$source = file_get_contents('php://input');

我试着用获得mime类型

mime_content_type($filename);

finfo_file($finfo, $filename);

但在我的情况下$filename是什么?它不适用于

$filename = 'php://input';

我可以从其他方式获取mime内容类型吗?

AJAX

addEvent(canvas, 'drop', function(e) {
    e.preventDefault();
    var files = e.dataTransfer.files;
    upload(files,e.target,0);
});
function upload(files, area, index){
    var file = files[index];
    xhr.open("post", "/index.php", true);
    xhr.setRequestHeader("content-type", "multipart/form-data");
    xhr.setRequestHeader("X-File-Type", file.type);
    xhr.setRequestHeader("X-File-Size", file.size);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
            read(xhr.responseText);
        }
    }
    xhr.send(file);
}

知道吗?

谢谢旋风,我做到了:

保存在临时文件中:

$temp_file = tempnam(sys_get_temp_dir(), 'Tux');  
file_put_contents($temp_file , $source); 

要获取mime内容类型:

$finfo = finfo_open(FILEINFO_MIME_TYPE);  
$content_type = finfo_file($finfo, $temp_file);