Как получить тип содержимого MIME из «php: // input» в переполнении стека

Изображения сбрасываются в область, а затем должны автоматически сохраняться на сервере.

Изображения отправляются с помощью AJAX-запроса.

Я хотел бы проверить тип MIME со стороны сервера, чтобы убедиться, что я не буду сохранять ничего небезопасного.

Заголовки на самом деле не являются решением, потому что они приходят со стороны клиента, поэтому их можно изменить.

PHP

Я получаю файл так:

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

Я пытался получить тип пантомимы с

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);
}

Любая идея ?

1

Решение

Спасибо, Циклон, я сделал это:

Чтобы сохранить во временном файле:

$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);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]