Michael_Kamen
Sep 10th, 2004, 06:38 AM
Hi,
I'm using PHP and MySQL to store binary data (normal files).
Then I have some other page on which users can download those files.
THe problem is:
The downloaded files are completely rooted up.
Example:
Original document:
Mult3 - Tijdens deze module werken de projectteams aan de interface van een door
hen zelf ontwikkeld product. De volgende onderdelen komen bij het ontwikkelen van
een user interface in deze module aan de orde
Is bijna af.
Comp3 - Hiervoor moet ik een mouse-driver programmeren in C\Linux. Deze moet
overnieuw gemaakt worden, maar ik heb nu geen Linux.
Kost hooguit een uurtje, als ik Linux heb.
Downloaded document:
╨╧ рб▒ с > ■ % ' ■ $
ье┴ 7 Ё ┐ щ
bjbjU U " 7| 7| щ l ╢ ╢ ╢ ╢ ╢ ╢ ╢ ╩ ▓ ▓ ▓ ▓
╛
╩ ╢ ╓ ╓ ╓ ╓ ╓ ╓ ╓ ╓ Ь Ю Ю Ю Ю Ю Ю $ ╙ є 0 ┬ ╢ ╓ ╓ ╓ ╓ ╓ ┬ b ╢ ╢ ╓ ╓ ╫ b b b ╓ v ╢ ╓ ╢ ╓ Ь b ╓ Ь b : b Ь ╢ ╢ Ь ╓ ╩
*Х╫5y┬ ╩ ш ▓ L Ь Ь э 0 Ь # L # Ь b ╩ ╩ ╢ ╢ ╢ ╢ ┘ Mult3 - Tijdens deze module werken de projectteams aan de interface van een door hen zelf ontwikkeld
product. De volgende onderdelen komen bij het ontwikkelen van een user interface in deze module aan de ordeIs bijna af.Comp3 - Hiervoor moet ik een mouse-driver
programmeren in C\Linux. Deze moet overnieuw gemaakt worden, maar ik heb nu geen Linux.Kost hooguit een uurtje, als ik Linux heb.
I've tried storing and retrieving several files like executables, zip files, documents, pictures. Only the jpg files were retreived correctly, the rest was really *****ed up...
This is the code I use to store and download the data again:
To store the data:
$db=mysql_connect ("localhost", $dbuser, $dbpass") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("chieljan_CWN");
if (isset($binary_File) && $binary_File != "none")
{
$data = addslashes(fread(fopen($binary_File, "r"), filesize($binary_File)));
$strDescription = $_POST['description'];
$sql = "INSERT INTO doc_documenten ";
$sql .= "(description, document, category, filename, size ) ";
$sql .= "VALUES ('$strDescription', '$data', '1'";
$sql .= "'$binary_File_name', '$binary_File_size')";
$result = mysql_query($sql, $db)or die("Query failed : " . mysql_error());
}
To retreive the data again (through a link which contains the ID)
$id = $_GET['download'];
if ($id > 0)
{
$db=mysql_connect ("localhost", $dbuser, $dbpass") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("chieljan_CWN");
$sql = "SELECT document, filetype, filename, ";
$sql .="filesize FROM doc_documenten WHERE doc_id=$id";
$result = @mysql_query($sql, $db);
$data = @mysql_result($result, 0, "document");
$name = @mysql_result($result, 0, "filename");
$size = @mysql_result($result, 0, "filesize");
$type = @mysql_result($result, 0, "filetype");
header("Content-type: $type");
header("Content-length: $size");
header("Content-Disposition: attachment; filename=$name");
header("Content-Description: PHP Generated Data");
echo $data;
}
Can anyone tell me if I'm doing something wrong in PHP, or it is a mysql problem?
I'm using PHP and MySQL to store binary data (normal files).
Then I have some other page on which users can download those files.
THe problem is:
The downloaded files are completely rooted up.
Example:
Original document:
Mult3 - Tijdens deze module werken de projectteams aan de interface van een door
hen zelf ontwikkeld product. De volgende onderdelen komen bij het ontwikkelen van
een user interface in deze module aan de orde
Is bijna af.
Comp3 - Hiervoor moet ik een mouse-driver programmeren in C\Linux. Deze moet
overnieuw gemaakt worden, maar ik heb nu geen Linux.
Kost hooguit een uurtje, als ik Linux heb.
Downloaded document:
╨╧ рб▒ с > ■ % ' ■ $
ье┴ 7 Ё ┐ щ
bjbjU U " 7| 7| щ l ╢ ╢ ╢ ╢ ╢ ╢ ╢ ╩ ▓ ▓ ▓ ▓
╛
╩ ╢ ╓ ╓ ╓ ╓ ╓ ╓ ╓ ╓ Ь Ю Ю Ю Ю Ю Ю $ ╙ є 0 ┬ ╢ ╓ ╓ ╓ ╓ ╓ ┬ b ╢ ╢ ╓ ╓ ╫ b b b ╓ v ╢ ╓ ╢ ╓ Ь b ╓ Ь b : b Ь ╢ ╢ Ь ╓ ╩
*Х╫5y┬ ╩ ш ▓ L Ь Ь э 0 Ь # L # Ь b ╩ ╩ ╢ ╢ ╢ ╢ ┘ Mult3 - Tijdens deze module werken de projectteams aan de interface van een door hen zelf ontwikkeld
product. De volgende onderdelen komen bij het ontwikkelen van een user interface in deze module aan de ordeIs bijna af.Comp3 - Hiervoor moet ik een mouse-driver
programmeren in C\Linux. Deze moet overnieuw gemaakt worden, maar ik heb nu geen Linux.Kost hooguit een uurtje, als ik Linux heb.
I've tried storing and retrieving several files like executables, zip files, documents, pictures. Only the jpg files were retreived correctly, the rest was really *****ed up...
This is the code I use to store and download the data again:
To store the data:
$db=mysql_connect ("localhost", $dbuser, $dbpass") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("chieljan_CWN");
if (isset($binary_File) && $binary_File != "none")
{
$data = addslashes(fread(fopen($binary_File, "r"), filesize($binary_File)));
$strDescription = $_POST['description'];
$sql = "INSERT INTO doc_documenten ";
$sql .= "(description, document, category, filename, size ) ";
$sql .= "VALUES ('$strDescription', '$data', '1'";
$sql .= "'$binary_File_name', '$binary_File_size')";
$result = mysql_query($sql, $db)or die("Query failed : " . mysql_error());
}
To retreive the data again (through a link which contains the ID)
$id = $_GET['download'];
if ($id > 0)
{
$db=mysql_connect ("localhost", $dbuser, $dbpass") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("chieljan_CWN");
$sql = "SELECT document, filetype, filename, ";
$sql .="filesize FROM doc_documenten WHERE doc_id=$id";
$result = @mysql_query($sql, $db);
$data = @mysql_result($result, 0, "document");
$name = @mysql_result($result, 0, "filename");
$size = @mysql_result($result, 0, "filesize");
$type = @mysql_result($result, 0, "filetype");
header("Content-type: $type");
header("Content-length: $size");
header("Content-Disposition: attachment; filename=$name");
header("Content-Description: PHP Generated Data");
echo $data;
}
Can anyone tell me if I'm doing something wrong in PHP, or it is a mysql problem?