Как установить тип mime файла с помощью fwrite в PHP?

Мне нужно создать файл .xls и присвоить ему правильный MIME-тип. Простой оператор header() не работал, вероятно, потому что я использую PHPGtk.

MSOffice выдает мне ошибку при открытии файла, в нем говорится, что содержимое может не отражать расширение файла, поэтому я сразу подумал, что это может быть из-за типа mime.

В настоящее время код (в очень искаженном фрагменте html):

$table = '<table><thead><tr><th>Oi</th></tr></thead><tbody><tr><td>opaopaopa</td></tr><tr><td>sjiasiaj</td></tr></tbody></table>';
      $handle = fopen('C:\opa.xls','w+');
      fwrite($handle, $table);
      fclose($handle);

person Jorge Guberte    schedule 12.09.2011    source источник
comment
Этот код не нуждается в типе MIME, поскольку файл записывается на диск. Планируете ли вы выводить файл пользователю через браузер?   -  person George Cummins    schedule 12.09.2011
comment
@George Нет, файл будет записан на диск без участия браузера.   -  person Jorge Guberte    schedule 12.09.2011


Ответы (1)


В Windows файлы не имеют типов mime. Они идентифицируются только по их расширению.

person Brad    schedule 12.09.2011
comment
Я задал вопрос, потому что MSOffice выдает мне ошибку при открытии файла, в нем говорится, что содержимое может не отражать расширение файла, поэтому я сразу подумал, что это может быть из-за типа mime. - person Jorge Guberte; 12.09.2011
comment
@jorge: Это потому, что вы пишете html-файл (без правильных тегов <html> и <body>, но называете его .xls. - person Marc B; 12.09.2011
comment
@Jorge: Всем было бы выгодно, если бы вы указали эту информацию в своем вопросе. Я не критикую. Это просто мысль. - person Herbert; 12.09.2011
comment
@Marc Марк Да, но могу ли я установить мим на что-нибудь еще, чтобы Office не жаловался на это? - person Jorge Guberte; 13.09.2011
comment
Не в самом файле. Вы можете попробовать поместить тег <meta> в блок <head>, но я не знаю, заглянет ли Windows или Office так далеко в файл, прежде чем решить выдать эту ошибку. - person Marc B; 13.09.2011
comment
@ Хорхе, поставь .html в конце. Вы не можете создать файл HTML с расширением XLS и ожидать, что Excel по умолчанию будет думать, что это подлинный файл электронной таблицы Excel. - person Brad; 13.09.2011
comment
@Brad Но мне не нужен файл HTML. Если бы мне было нужно, я бы просто изменил расширение. :П - person Jorge Guberte; 13.09.2011
comment
@ Хорхе .... тогда почему ты выводишь HTML-файл. У вас здесь большой разрыв. Сам ваш код выводит HTML, и вы называете его XLS. Если вы хотите XLS, выведите XLS. Если вы выводите HTML, назовите его .HTML. - person Brad; 13.09.2011
comment
@Brad Потому что у меня нет времени для реализации класса, который генерирует и выводит .xls, только из-за этого. (Поскольку крайний срок истекает через 10 часов, и я сильно отстаю от выполнения задач, мы — команда из 3 человек, которые в этот момент работают всю ночь.) - person Jorge Guberte; 14.09.2011