Problem mit PHP-Download (MySQL)

Gunah

Erfahrenes Mitglied
hi

ich lade per einem Script datein hoch das klappt auch alles soweit...
hat die richtige Byte Zahl in der DB usw.
nur wenn ich die über das 2te script lade.. sind die datei kaputt...
wenn ich die datein per FTP Lade sind sie iO

PHP:
<?php
//downloads´
require('./global.php');
checklogin();
if($load=='su') {
$tempname = $_FILES['file']['tmp_name']; 
$name = $_FILES['file']['name'];
$type = $_FILES['file']['type'];
$size = $_FILES['file']['size'];
$path_parts = pathinfo($name);
$contenttype=$path_parts['extension'];
$anzname = $_POST['anzname'];
if($size > "2000000") { 
    $err[] = "Die Datei welche Sie hochladen wollen, ist zu gross!<br />Maximale Dateigrosse beträgt 2000 KB!"; 
}  
if(empty($anzname)) {
$err[] = "Sie haben keinen Anzeigenamen angegeben.";
}
if(empty($err)) { 
    $db->query("INSERT INTO ".$mysqlprefix."_download (name,anzname,contenttype,size,time,userid,extension) VALUES ('".addslashes($name)."','".addslashes($anzname)."', '".addslashes($type)."', '".addslashes(intval($size))."', '".time()."', '".intval(userid())."','".addslashes($contenttype)."');");
    copy($tempname, '../attachments/attachment_'.$db->insert_id().'.'.$contenttype); 
    $loaded= htmlconverter("Die Datei ".$name." wurde erfolgreich hochgeladen!").'<br /><br /><a href="'.filename().'">Klicken Sie hier um wieder zur Übersicht zu gelangen</a>';
} 
else { 
    foreach($err as $error) 
    $eroor=$error; 
}
}
adminpage('Download Bereich | Hochladen',$eroor.''.$loaded.'<br />
<br />
<form enctype="multipart/form-data" action="'.filename().'" method="post"> 
<input type="file" name="file"><br />
Anzeige Namen angeben:<br />
<input type="text" name="anzname" value="" /><br />
<input type="submit" value="hochladen">
<input type="hidden" name="load" value="su">
</form>');
?>

adminpage()=gibt die Seite aus mit dem was ausen drum ist
checklogin() sollte denke ich klar sein

die datei wird hochgeladen in die DB und alle angaben sind richtig:
hier mit soll es runtergeladen werden:
PHP:
<?php
require('./global.php');
if(empty($_REQUEST['action'])) $action='main';
if($action=='main') {
$result=$db->query("SELECT * FROM ".$mysqlprefix."_download");
while($row=$db->fetch_array($result)) {
echo '<strong>'.htmlconverter($row['anzname']).'<br />
          <a href="downloads.php?action=download&amp;download='.intval($row['id']).'">&raquo; Download &laquo;</a></strong><br />
      <br />';
      }
} elseif($action=='download') {
$result=$db->query("SELECT * FROM ".$mysqlprefix."_download WHERE id='".addslashes(intval($_REQUEST['download']))."' LIMIT 1;");
while($row=$db->fetch_array($result)) {
$thefile='./attachments/attachment_'.$row['id'].'.'.$row['extension'];
header('Content-Type: '.$row['contenttype']);
//header('Content-Type: application/force-download');
header('Content-disposition: attachment; filename = '.$row['name']);
header('Content-Length: '.$row['size']);
readfile($thefile);
}
}
?>

hier die DB strucktur:
Code:
CREATE TABLE `prefix_download` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL default '',
  `anzname` varchar(255) NOT NULL default '',
  `contenttype` varchar(255) NOT NULL default '',
  `size` varchar(255) NOT NULL default '',
  `extension` varchar(50) NOT NULL default '',
  `time` int(255) NOT NULL default '0',
  `userid` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

ich nutze ein class_db zur verbindung. die funktionen sind ähnlich und bestehen sogar aus den orginalen...

danke schonmal für eure antworten :D

MfG Gunah
 
Zuletzt bearbeitet:
Gib mal den Inhaltstyp „text/plain“ an und schau dir an, was das Skript überhaupt ausgibt. Vermutlich gibt es eine Fehlermeldung, so dass diese auch zum Inhalt gehört.
 
thx für den tip isn zielioch beschissen ner fehler den ich gemacht habe, da ich beim Download Script noch ober und unterhalb HTML variablen hatte konnte das natrülich nicht gehen arrg wie dumm von mir arrg

MfG Gunah
 
Zurück