Autor Zpráva
spiider
Profil *
Ahoj napsal jsem si takového menšího klienta v PHP a vše je v pohodě, až na to, že když kliknu na nějakou přílohu a zobrazí se mi okno pro otevření nebo uložení, tak přímé otevření nefunguje a píše to : "Soubor nemůže být otevřen, protože asociovaná aplikace neexistuje". Pokud dám uložit a pak soubor otevřu jde vše v pořádku. Kód pro zpracování příloh mám tento:
header('Content-Type: application/x-unknown-'.$_GET['mime']);
  
  if (eregi('MSIE', $HTTP_USER_AGENT) && eregi('5.5', $HTTP_USER_AGENT)) header('Content-Disposition: filename=' . ($_GET['filename']));
  else header('Content-Disposition: attachment; filename=' . ($_GET['filename']));
  
  $user=neco@neco.cz';
  $pass='heslo';
  $host='{imap.neco.cz/notls/imap4}INBOX';
  $mail=@imap_open($host,$user,$pass);
  $file = imap_fetchbody($mail, $_GET['id'], $_GET['part']);
  imap_close($mail);
  if ($_GET['transfer'] == 'BASE64') $file = imap_base64($file);
  elseif($_GET['transfer'] == 'QUOTED-PRINTABLE') $file = imap_qprint($file);
  
  header('Content-Length:'.filesize($file));
  echo $file;


Díky za rady.
AM_
Profil
spiider:

header('Content-Type: application/x-unknown-'.$_GET['mime']);
Nechápu význam tohoto: Buď, pokud chceš, aby se příloha vždy nabízela ke stažení, tak dej:
header('Content-Type: application/octet-stream');

pokud ji má zobrazit prohlížeč (pokud to umí) tak musíš předat platný content-type, nicméně prefixace nějakým x-unknown- mi není moc jasná, to bude zdroj toho problému.

eregi('MSIE', $HTTP_USER_AGENT)
místo eregi používej preg_match('~vyraz~i', $text); od PHP5.3 použití ereg* funkcí hází E_DEPRECATED.
v tomhle případě vůbec regulár nepoužíváš, takže vhodnější bude stripos()

$mail=@imap_open($host,$user,$pass);
zavináč dej pryč. Při vývoji aplikace by sis měl nechávat zobrazovat všechny chyby, naopak v ostrém provozu všechny globálně vypnout pomocí ini_set('display_errors', 'off');

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0