Ik probeer een php-script te schrijven waarbij het volgende achtereenvolgens moet gebeuren.
1. Leeg bestand volschrijven.
2. Het bestand ter download aanbieden.
3. Het bestand leegschrijven (d.w.z. overschrijven zonder inhoud).
Ik heb het onder meer zo geprobeerd:
Het script dat de download aanbiedt is als volgt:
Daarnaast heb ik geprobeerd dit met een popup te doen, maar ook dat werkt niet. Een tmpfile() geeft ook problemen wanneer ik probeer te downloaden. Wie kan mij helpen of heeft een suggestie?
1. Leeg bestand volschrijven.
2. Het bestand ter download aanbieden.
3. Het bestand leegschrijven (d.w.z. overschrijven zonder inhoud).
Ik heb het onder meer zo geprobeerd:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| <?php if(isset($_POST[nnbs1]) OR isset($_POST[nnbs2]) OR isset($_POST[nnbs3]) OR isset($_POST[filteren])) { // Laten we eerst controleren of het bestand bestaat en of we er in kunnen schrijven. if (is_writable($filename)) { // In ons voorbeeld openen we $filename in 'toevoeg' modus. // De bestands pointer is aan het einde van het bestand // en daar gaat $somecontent naar toe als we het fwrite()'en. if (!$handle = fopen($filename, 'w')) { echo "Kan het bestand niet openen ($filename)"; } // Schrijf $somecontent naar ons bestand dat we geopend hebben. if (!fwrite($handle, $somecontent)) { echo "Kan niet schrijven naar bestand ($filename)"; } fclose($handle); } else { echo "Het bestand $filename is niet schrijfbaar"; } } //het bestand ter download aanbieden if(isset($_POST[nnbs1]) OR isset($_POST[nnbs2]) OR isset($_POST[nnbs3])) { streamAttached('/server/financien.txt','financien.txt'); } if(isset($_POST[filteren])) { streamAttached('/server/incasso.csv','incasso.csv'); } if(isset($_POST[nnbs1]) OR isset($_POST[nnbs2]) OR isset($_POST[nnbs3]) OR isset($_POST[filteren])) { //het bestand weer leegmaken if (is_writable($filename)) { // In ons voorbeeld openen we $filename in 'toevoeg' modus. // De bestands pointer is aan het einde van het bestand // en daar gaat $somecontent naar toe als we het fwrite()'en. if (!$handle = fopen($filename, 'w')) { echo "Kan het bestand niet openen ($filename)"; } // Maak het bestand leeg. if (!fwrite($handle,'')) { echo "Kan niet schrijven naar bestand ($filename)"; } fclose($handle); } else { echo "Het bestand $filename is niet schrijfbaar"; } } ?> |
Het script dat de download aanbiedt is als volgt:
PHP:
1
2
3
4
5
6
7
8
9
| function streamAttached($path,$name) { header('Pragma: no-cache'); header('Cache-control: private, must-revalidate'); header("Content-Type: application/octet-stream"); header("Content-Length: " .(string)(filesize($path)) ); header('Content-Disposition: attachment; filename="'.($name).'"'); readfile($path); } |
Daarnaast heb ik geprobeerd dit met een popup te doen, maar ook dat werkt niet. Een tmpfile() geeft ook problemen wanneer ik probeer te downloaden. Wie kan mij helpen of heeft een suggestie?
[ Voor 8% gewijzigd door een moderator op 13-10-2007 15:52 . Reden: [code]-tags. Doe je dat de volgende keer zelf? :) ]