Avatar billede andersthingholm Nybegynder
27. april 2004 - 16:04 Der er 12 kommentarer og
1 løsning

Skriv udtræk til fil

Hej,

Jeg har et stort database udtræk (HTML-koder) som jeg gerne vil have skrevet til en fil på serveren. Når filen er gemt, skal den gerne sendes til klienten.

Jeg håber nogen kan hjælpe.

VH

Anders
Avatar billede sone Nybegynder
27. april 2004 - 16:06 #1
Sendes som "downloades" eller redirectes til filen så den vises?
Avatar billede andersthingholm Nybegynder
27. april 2004 - 16:07 #2
Sendes til download
Avatar billede sone Nybegynder
27. april 2004 - 16:11 #3
I princippet behøver du ikke at gemme den fysisk på disk, men bare kaste output ud til browseren sammen med en header:
header('Content-disposition: attachment; filename=fname.ext');
Avatar billede sone Nybegynder
27. april 2004 - 16:12 #4
Husk at sætte headeren først - før du sender output?
Avatar billede andersthingholm Nybegynder
27. april 2004 - 16:12 #5
Jeg vil gerne have den gemt på serveren først.
Avatar billede sone Nybegynder
27. april 2004 - 16:13 #6
øhh, ja... det vil selvfølgelig være en fordel hvis du skal bruge filen flere gange ellers ikke
Avatar billede coderdk Praktikant
27. april 2004 - 22:30 #7
Avatar billede sone Nybegynder
28. april 2004 - 08:42 #8
coderdk > Eller bare en simpel require/include...
Avatar billede coderdk Praktikant
28. april 2004 - 08:50 #9
Ikke en god idé, hvis det er brugergenereret indhold ;)
Avatar billede sone Nybegynder
28. april 2004 - 09:27 #10
Korrekt.
Avatar billede andersthingholm Nybegynder
28. april 2004 - 11:37 #11
$filename = "newsletterGenerated.doc";
    $handle = fopen($filename, "w+");
    //$somecontent = "Add this to the file\n";
   
    // Let's make sure the file exists and is writable first.
    if (is_writable($filename)) {
   
      // In our example we're opening $filename in append mode.
      // The file pointer is at the bottom of the file hence
      // that's where $somecontent will go when we fwrite() it.
      if (!$handle = fopen($filename, 'w+')) {
            echo "Cannot open file ($filename)";
            exit;
      }
   
      // Write $somecontent to our opened file.
      if (fwrite($handle, $output) === FALSE) {
          echo "Cannot write to file ($filename)";
          exit;
      }
     
      //echo "Success, wrote ($somecontent) to file ($filename)";
         
      fclose($handle);
     
      header("location: newsletterGenerated.doc");
                     
    } else {
      echo "The file $filename is not writable";
    }
Avatar billede coderdk Praktikant
28. april 2004 - 12:12 #12
Pænt! :)
Du behøver dog ikke kalde fopen to gange, i stedet for denne:

if (!$handle = fopen($filename, 'w+')) {

Kan du blot checke på:

if (!$handle) {


Good work :)
Avatar billede coderdk Praktikant
28. april 2004 - 12:13 #13
Oh kom også lige i tanker om, hvis der er nogen som helst chance for at to folk kan generere den samme fil på samme tid, er det en god idé at indsætte:

flock($handle, LOCK_EX);

inden du skriver, og inden du lukker:

flock($handle, LOCK_UN);

Så er det først til mølle, og den anden person "venter" så på adgang til filen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester