dateien nach download kleiner als vorher

Hallöchen ins Forum und allen eine gesegnetes Fest,

folgende Frage habe ich, undzwar derzeit lese ich die Datensätze aus der Datenbank und verlinke jede Datei mit
HTML:
<a href='ordner/ordner2/dateiname.doc'>dateiname.doc</a>

sträflich-ich weiß ...:-(

Nur leider werden damit die direkten Pfade sichtbar. Zunächst kein Problem, da der Downloadbereich nur über sessions(Login System) und dann noch über .htaccess geschützt ist. Nun habe ich die Verlinkung auf ein Downloadscript abgeändet.
PHP:
<a href=\"download.php?id=$id&d=$dn\">$dn</a>

Die Datei Download.php wird geöffnet, der richtige Ordnerpfad wird mithilfe der ID und der Datenbank herausgefiltert und die Datei wird sogar zum Download angeboten.:)

Nur bleibt dort ein Problemchen undzwar: die runtergeladenen Dateien sind deutlich kleiner als die Orginalen. (Orginal ca 7 KB und die heruntergeladenen ca 800 byte) Natürlich weiß ich, das K Kilo bedeutet und mit 10^3 genommen werden muss, aber die Datein sind nicht lesbar... warum auch immer Microsaft Word sagt mir immer, dass ich einen konverter installieren muss... Irgendeiner eine idee? Beim Direktdownload geht alles reibungslos...

hier die Download.php
PHP:
require('./daten/db.inc');

$db = mysql_connect($dbserver, $dbuser, $dbpasswd) or die("Keine Verbindung möglich!");
$sqlab="SELECT AuftragID, Pfad, Dateiname, Dateiname1 from tbl_auftrag ";

if (isset($_GET['d']))
{
$id=$_GET['id'];
$sqlab.="WHERE AuftragID=$id";
$dateiname=$_GET['d'];
}

mysql_select_db($dbname);
$res = mysql_query($sqlab);
while($row = mysql_fetch_object($res))
    {
		$pfad="http://xxxx.dyndns.org";	
		$pfad.=$row->Pfad;
    }
header('Content-Type: application/octet-stream', true);
header('Content-Disposition: attachment; filename="'. $dateiname .'"');
header('Content-Length: '.filesize($dateiname));
//readfile($dateiname);
fopen($dateiname,'r');
exit;

Gruß Magnus
 
Warum hast du das [phpf]readfile[/phpf] auskommentiert? Das ist an der Stelle schon richtig! Das [phpf]fopen[/phpf] sowie das [phpf]exit[/phpf] kannst du auskommentieren.
 
PHP:
<?php
require('./daten/db.inc'); 

$db = mysql_connect($dbserver, $dbuser, $dbpasswd) or die("Keine Verbindung möglich!"); 
$sqlab="SELECT AuftragID, Pfad, Dateiname, Dateiname1 from tbl_auftrag "; 

if (isset($_GET['d'])) 
{ 
$id=intval($_GET['id']);  // Gegen böse "Hacker"
$sqlab.="WHERE AuftragID=$id"; 
$dateiname=$_GET['d'];
} 

mysql_select_db($dbname); 
$res = mysql_query($sqlab); 
if($row = mysql_fetch_object($res))   // Es gibt ja nur eine Datei -> keine Schleife
{ 
        $pfad="http://xxxx.dyndns.org";     
        $pfad.=$row->Pfad; 
} 
else
  die("Datei nicht gefunden");
header('Content-Type: application/octet-stream', true); 
header('Content-Disposition: attachment; filename="'. basename($dateiname).'"'); 
header('Content-Length: '.filesize($dateiname)); 
//readfile($dateiname); 
$file=fopen($dateiname,'br');   // Binär Modus!! 
fpassthru($file);
fclose($file);?>

Dieses Script ist allerdings noch nicht okmplett abgesichert!
 
Zuletzt bearbeitet:
Das Script ist ja so noch nicht im "Umlauf" - um Sicherung kümmer ich meisten zum Schluss.. erstmal sollte es so funktionieren und danach baue ich die entsprechenden Maßnahmen ein.. danke trotzdem aber für den hinweis.

Das ich fopen genommen hab, hab ich in einem anderen Foen Beitrag gelesen.. Ich dachte, dass es evtl. daran läge. Naja kann man vorerst nichts machen.

Also downloaden funktioniert und er zeigt wie gesagt eine bytes zahl an, die datei lässt sich allerdings nicht öffnen und wenn ich Ihm den Konverter verweigere, also auf nein klicke, dann hab ich eine Fehlermeldung in der Vorschau im Word Dokument stehen....:confused:

<br />
<b>Warning</b>: filesize() [<a href='function.filesize'>function.filesize</a>]: stat failed for TextPreview.doc in <b>C:\intranet\test\download.php</b> on line <b>23</b><br />
<br />
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at C:\intranet\test\download.php:23) in <b>C:\intranet\test\download.php</b> on line <b>23</b><br />
<br />
<b>Warning</b>: readfile() [<a href='function.readfile'>function.readfile</a>]: Unable to access TextPreview.doc in <b>C:\intranet\test\download.php</b> on line <b>24</b><br />
<br />
<b>Warning</b>: readfile(TextPreview.doc) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: No error in <b>C:\intranet\test\download.php</b> on line <b>24</b><br />

Muss ich eventuell etwas an der PHP.INI einstellen.. umstellen oder sonst wie? Hat jhemand so einen Fehler schon mal gehabt? Habe ich evtl. einen header vergessen?

Gruß
 
...ähm eledigt... :-(:-(:-(:-(

Dummheit schützt nicht vor dem Feind............?

Ich habe ganz vergessen auf dem Server in das zielverzeichnis mit Chdir zu gehen, um dort die Datei herunterzuladen... Jetzt läuft alles !...*oh man ist das Peinlich*

Naja Guten Rutsch und weiterhin Frohe Festtage!

Gruß Magnus
 
Hallo nochmal zurück ins Forum,

nach kurzer Testphae ist uns aufgefallen, dass die abgelegten Word Dokumente nach dem Download über das Script nicht mehr zu öffnen sind. Microsoft Word verlangt nache inem Konverter...? Irgendjemand eine Idee, warum sich die Files nicht mehr öffnen lassen und man nur nich leere Kästchen sieht? Sobald ich die Datein direkt auf dem Server öffne(also ohen dl script) funktioniert alles reibungslos...

Ich hoffe, jemand hat ne antwort parat..

Gruß

Magnus
 
Zurück