Toon posts:

[php] bestand downen en openen met notepad

Pagina: 1
Acties:
  • 191 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
situatie
ik heb een bestand lijst.php in dit bestand wordt een plain/text lijst gegenereerd (geen html dus). als je op de link klikt naar lijst.php laat de browser (IE6) de inhoud (plain/text) gewoon zien.

doel
ik wil dat je wordt geprompt het bestand te downloaden/openen en het vervolgens kan bekijken met notepad. dus ik voeg aan de header van lijst.php het volgende toe:
code:
1
2
header("Content-type: text/richttext; name=lijst.txt");
header("Content-Disposition: inline; filename=lijst.txt");


probleem
en inderdaad notepad opent en wil lijst[1].txt weergeven. maar er volgt een foutmelding van notepad dat hij lijst[1].txt niet kan vinden in de temp map van IE.

geprobeerder (niet werkende) oplossingen
misschien doe ik iets fout met de header? ik heb zitten experimenteren met verschillende content-type's:
- text/plain
- application/notepad
- het weglaten van de content-disposition
en alle mogelijke combinaties daarvan, leveren niet het gewenste resultaat.

weet iemand hoe ik lijst.php wel krijg geopent/gedownload en vervolgens geopent met notepad?

  • NaliXL
  • Registratie: Maart 2002
  • Laatst online: 30-07 19:19
Ik vermoed dat het probleem meer bij IE zelf ligt. Maar waarom laat je de browser de file niet openen? Als er geen HTML-tags in zitten o.i.d., word het sowieso als gewone plain-text weergegeven...

Genoeg is meer dan veel, en tart den overvloed


Verwijderd

Topicstarter
omdat de gebruiker het bestand graag thuis wil hebben als .txt bestand. en als de plain text gewoon in de browser weergeef dan moet de gebruiker een bewerking extra doen (namelijk alles selecteren, notepad openen, en opslaan als - of de html pagina opslaan als) en dat wil ik de gebruiker besparen.
(im so user friendly ;-))

Verwijderd

/me heeft een soortgelijk probleem...
Nadat ik het voor elkaar heb gekregen om een gegenereerde file te kunnen downloaden (en dit kan zowel een plain text file, maar ook bijv. een csv-file zijn), krijg ik nu precies zo'n soortgelijke foutmelding als dat jij krijgt en ik heb geen idee waar het aan kan liggen...

Ik vermoed idd ook dat het een IE-probleem is, maar wat de oplossing is... :?

edit:
Het ligt waarschijnlijk aan de (browser?) cache... na een reset werkte 't ineens wel (weer) goed!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Een Location of Refresh header naar een bestand wat een content-disposition: attachment; header meegeeft.

PHP:
1
2
3
Header ( "Refresh: 3; url=./download.php" );

echo 'woei, \'t bestand gaat over 3 seconden gedownload worden!';
download.php:
PHP:
1
2
3
4
5
6
Header ( "Content-type: text/plain" );
Header ( "Content-disposition: attachment; filename=woei.txt" );

$fd = fopen ( "woei.txt", 'r' );
fpassthru ( $fd );
fclose ( $fd );


works fine for me ...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
ik heb die refresh ook geprobeerd, maar dat geeft hetzelfde resultaat (foutmelding).
op de manier van drm (een tussen file maken) werkt het wel, maar ik krijg dan wel een foutmelding kado :( die dan dus ook in het textfile terugkomt (niet koel).
fclose(): 1 is not a valid File-Handle resource
Cannot send session cache limiter - headers already sent

ik snap ook niet wat het nut is van dat hele woei.txt het vreemde is dat het daardoor wel werkt.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

woei.txt is natuurlijk maar een voorbeeldje. Dat is een bestandje wat php opent, en als 'attachment' aan de client stuurt. Hij opent het bestandje (fopen), leest de inhoud in en stuurt die doorr (fpassthru), en sluit het bestand weer (fclose). Als dat bestand niet bestaat, gaat het openen dus ook niet goed, maar wat er precies naar de client gestuurd moet worden, moet je zelf uitzoeken, dat kan ik niet voor je verzinnen :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
het bestand (woei.txt of whateva.txt) bestaat wel, maar ik snap niet waarom het alleen via zo'n tussenbestand werkt, en niet gewoon met een refresh of direct.

Verwijderd

Topicstarter
ik ben er trouwens achter waarom ik een error krijg bij het downloaden (zonder dat woei verhaal).

het heeft te maken met de volgorde: include(), start_session() en header().

ik heb een inlcude nodig voor de db gegevens (connect, pass, etc). met de session controleer ik of er wel ingelogt is, welke user_id en ik geef bep variabele mee voor de mysql query en tot slot geef ik met de header allerlei info mee op het bestand te laten downloaden.

die volgorde daar gaat iets mis. ik ben nu nog aan het uitzoeken hoe ik dit kan oplossen...lastig probleem.

Verwijderd

je moet zorgen dat de browser geen headers ontvangt. Een spatie kan al genoeg zijn... Als de sessie gebruik maakt van cookies, dan is het al funest, deze gegevens kun je het beste via een get of een post doorgeven aan het download scherm (waar je terechtkomt door een refresh of een post)

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 28-08 19:27

Crazy D

I think we should take a look.

Verwijderd schreef op 31 oktober 2002 @ 13:51:
omdat de gebruiker het bestand graag thuis wil hebben als .txt bestand. en als de plain text gewoon in de browser weergeef dan moet de gebruiker een bewerking extra doen (namelijk alles selecteren, notepad openen, en opslaan als - of de html pagina opslaan als) en dat wil ik de gebruiker besparen.
(im so user friendly ;-))
File -> SaveAs
Dat moet je als het bestand in notepad is geopend ook doen....

Exact expert nodig?

Pagina: 1