2015-02-15 3 views
1

Изображения удаляются по области, а затем их необходимо автоматически сохранять на сервере.Как получить тип контента mime из «php: // input» в PHP

Изображения отправляют запрос 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); 
} 

Любая идея?

+0

Не можете вы просто сохранить файл во временном каталоге, затем используйте 'mime_content_type ($ tmp_name)', а затем выберите, хотите ли вы удалить файл или просто перенести его из папки temp? – Cyclonecode

+0

Он отлично работает! Спасибо :-) –

ответ

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); 
+0

Добавил огромные преимущества для использования 'tempnam' и' sys_get_temp_dir'. Эти непонятные встроенные лакомства поражают меня! – mike

Смежные вопросы