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

如何从';php://input' 在PHP中,php,ajax,mime-types,put,Php,Ajax,Mime Types,Put,图像被放置在一个区域上,然后必须自动保存到服务器上 通过AJAX请求发送图像 我想从服务器端检查mime类型,以确保不会保存任何不安全的内容 标题并不是一个真正的解决方案,因为它们来自客户端,所以可以更改 PHP 我收到的文件如下: $source = file_get_contents('php://input'); 我试着用它来获得mime类型 mime_content_type($filename); 及 但在我的例子中,$filename是什么?这对我不起作用 $filename =

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

通过AJAX请求发送图像

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

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

PHP

我收到的文件如下:

$source = file_get_contents('php://input');
我试着用它来获得mime类型

mime_content_type($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);

难道你不能将文件保存在临时目录中,然后使用
mime\u content\u type($tmp\u name)
,然后选择是删除该文件还是将其从临时文件夹中移动?它工作得非常好!谢谢:-)由于使用了
tempnam
sys\u get\u temp\u dir
,我们获得了巨大的荣誉。这些晦涩难懂的东西让我惊讶!
$finfo = finfo_open(FILEINFO_MIME_TYPE);  
$content_type = finfo_file($finfo, $temp_file);