|
|
|
Problem z pobieraniem pliku z bazy danych |
« Zobacz poprzedni temat :: Zobacz następny temat » |
Autor |
Wiadomość
|
edytakj |
Wysłany: 27 Sie 2007, 19:05 Temat postu: Problem z pobieraniem pliku z bazy danych |
|
|
Nowicjusz
Dołączył: 27 Sie 2007 Posty: 1
|
Utworzylam tablicę PLIKI w bazie danych, w której są przechowywane pliki
typu(*.pdf,*.doc itd) struktura tej tablicy jest nastepująca:
IdPlik:int
Plik: MEDIUMBLOB
Nazwa:char
Typ:char
Rozmiar:char
Utworzyłam skrypty:
1. odpowiedzialny za dodanie pliku do bazy DZIALA w sumie dobrze
Kod: | <?PHP
if (isset($_FILES['plik']))
{
if ($_FILES['plik']['error']==UPLOAD_ERR_OK)
{
$nazwapliku=$_FILES['plik']['name'];
$typpliku=$_FILES['plik']['type'];
$rozmiarpliku=$_FILES['plik']['size'];
$srcplik=$_FILES['plik']['tmp_name'];
if ($typpliku=="application/msword" || $typpliku=="application/pdf" ||
$typpliku=="text/html" || $typpliku=="application/rtf" ||
$typpliku=="application/vnd.oasis.opendocument" || $typpliku=="text/plain" )
{
$plik=fopen($srcplik,"r"); //otwórz ten plik w trybie do odczytu
$mysqlplik = addslashes(fread($plik,$rozmiarpliku));
fclose($plik);
unlink($srcplik);
$mysqltyppliku = addslashes($typpliku);
$mysqlnazwapliku = addslashes($nazwapliku);
$conn=mysql_connect("localhost","root","")
or die ('Błąd połączenia z bazą MySQL: '.mysql_error());
$result2=mysql_select_db("farmacja",$conn)
or die ('Błąd podczas wyboru bazy: '. mysql_error());
$sql1="INSERT INTO pliki (Idplik,plik,typ,nazwa,rozmiar)VALUES
('','$mysqlplik','$mysqltyppliku','$mysqlnazwapliku','$rozmiarpliku')";
if($result1=mysql_query($sql1,$conn))
echo('Twój plik został zapisany do bazy danych MySQL');
else
echo('Błąd wykonania zapytania 1: '. mysql_error());
}
else {die("Twój plik nie został zapisany w bazie, bo jest innego formatu niż:
pdf,doc,txt,html,rtf !!!"); exit;}
}
else {die("Błąd podczas wysyłania pliku !!!"); exit;}
}
else {die("Nie wskazano pliku do wysłania !!!"); exit;}
?> |
2.pobieram plik z bazy i mam mozliwosc zapisania go na dysku (nie dziala)
Kod: | <?PHP
$conn=mysql_connect("localhost","root","") or die ('Błąd połączenia z bazą MySQL: '.mysql_error());
$result1=mysql_select_db("farmacja",$conn) or die ('Błąd podczas wyboru bazy: '. mysql_error());
$sql1="select * from pliki where IdPlik='16'";
$result2=mysql_query($sql1,$conn) or die ('Błąd wykonania zapytania 1: '.mysql_error());
$row = mysql_fetch_assoc($result2);
$pliczek=$row['plik'];
$typpliku=$row['typ'];
$nazwapliku=$row['nazwa'];
$rozmiarpliku=$row['rozmiar'];
header("Content-Type:$typpliku");
header("Content-Length: $rozmiarpliku");
header("Content-Disposition: attachment; filename=$nazwapliku");
print $pliczek;
?> |
Przegladarka (INTERNET EXPLORER 7.0) wyrzuca mi nastepujace bledy, jak temu
zaradzic:
Warning: Cannot modify header information - headers already sent by output started at c:\usr\apache\httpd\html\index\pliki\wyswietl.php:2)
Warning: Cannot modify header information - headers already sent by (output started at c:\usr\apache\httpd\html\index\pliki\wyswietl.php:2)
Warning: Cannot modify header information - headers already sent by (output started at c:\usr\apache\httpd\html\index\pliki\wyswietl.php:2) |
|
Powrót do góry |
|
|
KCS |
Wysłany: Temat postu: Reklama w KCS |
|
|
|
|
Powrót do góry |
|
|
road... |
Wysłany: 02 Wrz 2007, 07:34 Temat postu: |
|
|
Nowicjusz
Dołączył: 02 Wrz 2007 Posty: 2
|
Zamień część twojego kodu:
Kod: | header("Content-Type:$typpliku");
header("Content-Length: $rozmiarpliku");
header("Content-Disposition: attachment; filename=$nazwapliku"); |
na to:
Kod: | ob_end_clean();
header("Content-Type:$typpliku");
header("Content-Length: $rozmiarpliku");
header("Content-Disposition: attachment; filename=$nazwapliku");
flush();
die(); |
i bedzie śmigać |
|
Powrót do góry |
|
|
|
|
|
|
Strona 1 z 1 |
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
|
|
|