Hei,
Elikä nyt on sattunut eteen ongelma download skriptin kanssa. Sen tarkoituksena on yksinkertaisesti ladata MySQL-tietokannasta sinne upattu tiedosto. .txt-tiedostot aukeavat aivan normaalisti, mutta kaikki muut tyypit ovat aukaistaessa vahingoittuneita. Itse uskoisin ongelman olevan headereissa. Näin muutaman kuukauden kokemuksella ottakaa arvaukseni varauksella. Tärkeintä olisi nyt saada PDF-tiedostot ladattua ja saada toimimaan.
function download($id) { $query = "SELECT * FROM store WHERE id={$id}"; $result = mysql_query($query); $row = mysql_fetch_array($result); $filename = $row['name']; $filesize = $row['size']; header("Content-Type: application/pdf"); header("Content-Disposition: attachment; filename={$filename}"); header("Content-Length: {$filesize}"); echo $row['file']; exit; }
Nyt jo useamman päivän tämän kanssa taistellut, joten ajattelin kysäistä apua. Kiitokset
Sinun pitää tehdä se PDF-tiedosto jossain, jos aiot sellaisen käyttäjälle syöttää. Selain ei itse osaa mistään tekstitiedostosta PDF:ää vääntää.
Jos käyttäjä on tietokantaan PDF-tiedoston upannut, niin eikö se tuon koodipätkän avulla pitäisi sieltä PDF:nä takaisin myös tulla?
Onko sarakkeesi varmasti tyypiltään BLOB eikä TEXT ja riittävän iso tiedostolle (eli luultavasti ainakin MEDIUMBLOB)?
Kyllä, tyypiksi olin asettanut BLOB.
if (isset($_FILES['file'])) { $file = $_FILES['file']['tmp_name']; if (!isset($file) || empty($file)) { echo "Et ole valinnut tiedostoa!"; } else { $uploaded_file = file_get_contents($_FILES['file']['tmp_name']); $uploaded_file_name = mysql_prep($_FILES['file']['name']); $time = mysql_prep(date('Y-m-d H:m:s')); $query = "INSERT INTO store VALUES ('', '$uploaded_file_name', '$uploaded_file', '$time')"; $result = mysql_query($query);
Tuossa on sitten pätkä, jolla tiedosto upitaan tietokantaan. Tässä huomasin, että tiedoston koko pienenee huomattavasti, kun se päätyy tietokantaan. Olisiko yllä olevassa koodinpätkässä jotain häikkää?
Laitahan ne virheilmoitukset päälle. $uploaded_filessä on arvo false, koska kyseistä tiedostoa ei ole olemassa.
Kuten sanoin, pelkkä BLOB on luultavasti liian pieni monille PDF-tiedostoille (vain 64 kilotavua).
The Alchemist on luultavasti nyt lukenut jotain väärin, kyllähän se tiedosto pitäisi juuri noin olla olemassa.
Päivämäärässä on virhe, m tarkoittaa kuukautta eikä minuutteja. Minuutit ovat i.
Tuli katsottua sinun viestisi aluksi väärin. Lueskelin BLOB ja TEXT -tyypeistä hieman, ja kuten suosittelit vaihdoin BLOB-tyyppiä suuremmaksi. Tämä ratkaisi jo erittäin turhauttavaksi käyneen ongelmani. Tuli myös vanhingossa pastettua vanhempi pätkä tuosta upload-skriptistä, joten siitä uupuu suurin osa koodista, vaikka se toimiikin ja ajaa saman asian.
Kiitos molemmille vastauksistanne!
Metabolix kirjoitti:
The Alchemist on luultavasti nyt lukenut jotain väärin, kyllähän se tiedosto pitäisi juuri noin olla olemassa.
No en ole kyllä ikinä katsonut, minne käyttäjien uploadaamat tiedostot menevät, mutten olettanut niiden olevan samassa hakemistossa kuin itse skriptikin on.
E: On siinä tosiaan se koko polku mukana eikä vain tiedoston nimi. Sen muistin sit väärin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.