Męczę się już z tematem 2 tygodnie i nie potrafię się z tym uporać. Robię to jak jest w instrukcji podanej na forum dotyczącej zapisu pilików w bazie danych do pola BLOB. No i wszystko byłoby fajnie gdyby nie mały błąd - a mianowicie pliki w *pdf'e zapisane w bazie nie otwierają się poprawnie. Pliki tekstowe i jpg otwierają się bez błędów - jak tylko próbuje odczytać plik PDF w Adobe - mam komunikat ze plik nie możne być otwarty - prawdopodobnie jest uszkodzony. Dodam, że plik przed wpisem do bazy otwieram bez problemu. Czy ktoś może mi pomóc - ewentualnie podpowiedzieć gdzie jest błąd? Ja już jestem bezsilny i nie potrafię. rozwiązać problemu

formularz zapisu do bazy ( podany z linku na tym forum):

<?php // jeśli dostaliśmy z formularza dane, rozpoczynamy umieszczanie
// danych w bazie
$wykonaj = $_POST[wykonaj];
if ($wykonaj == "upload") {
// łączymy się z bazą danych
$db = mysql_connect("localhost", "user", "password");
mysql_select_db("dane_bin", $db) or die(mysql_errno() . ": " . mysql_error() . "<br>");
//sprawdzamy czy otrzymaliśmy plik, jeśli nie wybrano żadnego pliku
// to zmienna $plik="none"
$opis_a =$_POST[opis];
$plik = $_FILES[plik][tmp_name];
$plik_name = $_FILES[plik][name];
$plik_size = $_FILES[plik][size];
$plik_type = $_FILES[plik][type];
if (isset($plik) && $plik != "none")
{ $dane = addslashes(fread(fopen($plik, "r"), filesize($plik)));
$opis_a = addslashes(nl2br($opis));
//zapisujemy do bazy
$sql = "INSERT INTO pliki ";
$sql .= "(opis, dane, nazwa_plik, rozmiar_plik, typ_plik) ";
$sql .= "VALUES ('$opis_a', '$dane', ";
//rozszerzenia zmiennej $plik określaja parametry pliku
//wysłanego na serwer, np. $plik_name - tymczasowa nazwa
//pliku uploadowanego na serwer, zwykle w katalogu /tmp
$sql .= "'$plik_name', '$plik_size', '$plik_type')";
$result = mysql_query($sql, $db);
//zwalniamy pamięć mysql_free_result($result);
echo "plik dodano do bazy danych.<br><br>";
echo "<a href='panel.php'>panel</a>";
}
mysql_close();
}
else
{ ?>
<HTML>
<BODY>
<FORM METHOD="post" ACTION="dodaj.php" ENCTYPE="multipart/form-data">
<INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="2000000">
<INPUT TYPE="text" NAME="wykonaj" VALUE="upload">
<TABLE BORDER="0">
<TR> <TD>Opis: </TD> <TD><TEXTAREA NAME="opis" ROWS="10" COLS="30"></TEXTAREA></TD> </TR>
<TR> <TD>Plik: </TD> <TD><INPUT TYPE="file" NAME="plik"></TD> </TR>
<TR> <TD COLSPAN="2"><INPUT TYPE="submit" VALUE="wyślij na serwer"></TD> </TR>
</TABLE> </FORM> </BODY> </HTML>
<?php
}
?>

formularz odczytu z bazy:

<?php
$id_plik =$_GET[id_plik];
if ($id_plik) {
// łączymy się z bazą danych
$db = mysql_connect("localhost", "user", "password");
mysql_select_db("dane_bin", $db) or die(mysql_errno() . ": " . mysql_error() . "<br>");
$sql = "SELECT dane, typ_plik, nazwa_plik, rozmiar_plik FROM pliki WHERE id_plik=$id_plik";
$result = @mysql_query($sql, $db);
$dane = @mysql_result($result, 0, "dane");
$nazwa = @mysql_result($result, 0, "nazwa_plik");
$rozmiar = @mysql_result($result, 0, "rozmiar_plik");
$typ = @mysql_result($result, 0, "typ_plik");
//wysyłamy odpowiednie nagłówki HTTP do przeglądarki
//w celu przygotowania jej na przyjęcie różnych rodzajów danych
header("Content-type: $typ");
header("Content-length: $rozmiar");
header("Content-Disposition: attachment; filename=$nazwa");
//wysyłamy zawartość pliku
echo $dane; }
?>

Witam ponownie
I nie dokończa jest tak jak powinno być - a mianowicie pliki z pola files dodawane sa z 1 formularza wcześniej - przycisk wysyła dane w postaci zmiennych $_FILES do następnego formularza gdzie zapisuje zmienna do zmiennych $_SESSION no i jak zatwierdzę ten drugi formularz dopiero wysyłam wartości do bazy. Zapisują się identycznie ale już jak próbuje otwierać to moim sposobem wyskakuje błąd - przykład z forum jest prawidłowy i działa poprawnie. Pytanie- czy mogę tak zrobić żeby wartości z pola files zapisać do zmiennych session i dopiero je zapisać do bazy?

Witam ponownie
Może się komuś przyda. - Problem częściowo rozwiązałem - chociaż nie jestem zadowolony bo to tylko ominiecie problemu a nie jego zlikwidowanie. Za cięki jestem. A mianowicie - problem wynika z pakietowego przesyłania danych plików. Nie wiem jak to obejść ale jak tylko dodaje 4 pliki w transakcji to właśnie w tych plikach występuje błąd otwarcia. Jak tylko dodaje je indywidualnie do bazy to wszystko jest ok. Może ktoś już spotkał się z takim problemem?
Pozdrawiam