[php] Downloaded file niet direct te openen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Middels PHP bied ik verschillende files (.doc, .ppt etc) ter download aan. Dat gaat prima. Je krijgt een scherm met de keuze om direct te openen in het bijbehorende programma, of op te slaan op schijf. Dit alles met onderstaande code.

PHP:
1
2
3
4
5
6
7
if ($fp = fopen($value -> location, "r"))
{ 
    header("Content-Type: application/octet-stream");  
    header("Content-Length: " . $value -> size); 
    header("Content-Disposition: attachment; filename=\"" . $value -> name . '.' . $value -> extension . "\""); 
    @fpassthru($fp); 
}


Nu is gaat het binnen IE niet helemaal goed. Als ik het te downloaden bestand op schijf opsla en dan open heb ik geen probleem. Als ik direct kies voor het openen in het bijbehorende programma, dan geeft bijvoorbeeld Excel de melding dat hij het bestand niet kan vinden, terwijl het via FF wel goed gaat? Waar kijk ik overheen?

Acties:
  • 0 Henk 'm!

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Een beetje offtopic misschien, maar ik heb het idee dat er wel meer kuren zijn met deze manier van bestanden downloaden. Zelf heb ik bijvoorbeeld het probleem dat de aangegeven naam (met "header("Content-Disposition: attachment; filename=\"bestand.bst\"");") niet werkt als ik http:// voor de url zet. Zonder dit werkt hij perfect.

Het kan dus best zijn dat dit niet aan je code ligt, maar aan php of IE. Ik heb het nog niet getest met FireFox oid.

[update]
In firefox werkt het perfect, probeer dit ook eens. Waarschijnlijk ligt het aan IE
[/update]

[ Voor 15% gewijzigd door Fles op 01-07-2005 16:53 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

En als je expliciet bijvoorbeeld Excel als content type gebruikt ipv octet-stream?

application/vnd.ms-excel volgens mij

[ Voor 21% gewijzigd door Bosmonster op 01-07-2005 16:52 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als ik in mn $_FILE['document']['type'] kijk kom ik bij een excel doc uit op application/vnd.ms-excel, alleen werkte dit ook niet!

[edit]
idd :)

[ Voor 26% gewijzigd door Verwijderd op 01-07-2005 16:54 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

En zonder content-length? :P Ook wel eens gelezen dat daar af en toe problemen mee zijn met IE.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Die had ik er juist bij gedaan omdat ik dacht van: misschien heeftie nog niet het hele bestand binnen omdatie niet weet hoe groot het bestand is. Maar het resultaat blijft hetzelfde...

[edit 1]

Heb ook mn cache gecleared etc etc...

[edit 2]

Net nog even een excel docje in mn systeem gezet. Had mn Excel nog open staan. Bestand downloaden en direct openen: ging goed. Bestand gesloten en nog een keer geprobeerd: ging goed. Toen heel Excel gesloten en nog een keer geprobeerd: kreeg weer de melding dat ...naam[1].xls niet gevonden kon worden`. Wazig... Zal dus niet aan mn software liggen, maar meer aan MSoft vermoed ik..

[ Voor 59% gewijzigd door Verwijderd op 01-07-2005 17:04 ]


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 21-09 02:04

aex351

I am the one

Misschien komt het doordat er nog andere code vooraf ge'echoed word?
Die probleem had ik namelijk ook.

[ Voor 24% gewijzigd door aex351 op 01-07-2005 18:49 ]

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17:49

ripexx

bibs

Ik gebruik de volgende twee headers

PHP:
1
2
    header("Content-type: excel/ms-excel");
    header("Content-Disposition: attachment; filename={$filename}.xls");

Oja het script genereerd een .csv file welke zonder output buffering wordt opgebouwd en wordt zowel in FF als IE goed geopend.

Getest met FF 0.9 en hoger op Win 2000 en XP en IE 6 met laatste paches.
[edit]
Damm, net weer eens getest maar nu SP2 er opzit lijkt deze het niet meer te doen? Of het nu aan XP SP2 ligt weet ik niet maar ik heb weer wat te doen dit weekend. Oja en ik kan de directe file length niet bepalen.

FF gekeken in de code op mijn werk en daar werken ze met een temp dir waar de Excel eerst wordt opgeslagen en dan gaat het wel goed.

[ Voor 59% gewijzigd door ripexx op 01-07-2005 18:55 ]

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Wanneer je niet per file een andere header wilt generenen kun je volgens mij dit gebruiken:
header("Content-Type: application/force-download");

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het downloaden is het probleem ook niet. De buffering / temporary opslag lijkt problemen te geven als het via IE gaat...

Acties:
  • 0 Henk 'm!

  • stappel_
  • Registratie: Augustus 2000
  • Laatst online: 20:41
het probleem zit in IE, en met https:// gaat het nog slechter. Met deze headers en in deze volgorde werkt het bij mij wel.
PHP:
1
2
3
4
5
6
7
8
9
10
11
header("Expires: Sat, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");

session_cache_limiter("must-revalidate");
header("Content-Type: application/csv");
header("Content-Disposition: attachment; filename=\"" . $ms_temp_header_name."\"");
applicatie csv kan ook een ander type zijn, application/vnd.ms-excel of word werkt ook.

Ubero: #2, Euler: #1, GOT: #1, Des: #1, Zeta: #1, Eon: #3, OGR-24: #3, OGR-25: #7,
LM: #7, AP: #5, DF: #19, D2OL: #37, SOB: #50, TSC: #63, RC5: #96

Pagina: 1