Autor | Zpráva | ||
---|---|---|---|
Honzicek84 Profil * |
#1 · Zasláno: 16. 12. 2014, 18:39:11
Ahoj mám takový zásadní problém, potřebuji přes form vložit soubor typu pdf a odeslat na server do slozky schuze a následně jméno toho souboru aby se vložilo do databáze a zobrazil se odkaz.
<FORM ACTION="upload.php" METHOD="post" ENCTYPE="multipart/form-data"> <INPUT TYPE="file" NAME="soubor" SIZE="30"> <INPUT TYPE="submit" NAME="akce" VALUE="Upload"> </FORM> Tohle by teoreticky mělo fungovat, ale s tím souborem upload.php už je to horší if ($akce == "Upload") { if ($soubor_type == "text/plain" or $soubor_type="text/html") { if (copy ($soubor, "test/$soubor_name")) { print "Soubor $soubor_name o velikosti $soubor_size bajtů byl úspěšně uploadnut na server<BR>"; } else { print "Při nahrávání souboru došlo k chybě!<BR>"; } } else { print "Soubor není požadového MIME typu!<BR>"; } } ?> |
||
Marschmallow Profil |
Honzicek84:
Použij skript pro upload obrázku a změň si v proměnné $allowedExt povolené koncovky souborů. Koncový název souboru v proměnné $fileName již můžeš uložit do DB. |
||
TomasJ Profil |
Honzicek84:
Měl bys používat superglobální proměnnou $_POST ($_POST['akce'], ...) místo těchto globálních proměnných ($akce, ...), které nebývají obvykle zapnuté (register_globals).
A na soubory to samé: $_FILES['soubor']['size'], $_FILES['soubor']['name'] , ...
copy ($_FILES['soubor']['tmp_name'], "test/".$_FILES['soubor']['name']) //raději používej move_uploaded_file P.S. Zjisti si jakého typu je soubor PDF (text/plain je obyčejný .txt, text/html zase .htm/.html) - MIME Type |
||
Honzicek84 Profil * |
#4 · Zasláno: 16. 12. 2014, 19:41:49
Když použiju tento kod, tak mi to funguje, jen potřebuju, aby se mi to jméno souboru uložilo do databáze
<form method="post" enctype="multipart/form-data"> <input type="file" name="obrazky[]" /> <input type="submit" value="Nahrát na server!" /> </form> <?php // konfigurace $uploadDir = 'obrazky'; // adresar, kam se maji nahrat obrazky (bez lomitka na konci) $allowedExt = array('pdf'); // pole s povolenymi priponami // zpracovani uploadu if(isset($_FILES['obrazky']) && is_array($_FILES['obrazky']['name'])) { $counter = 0; $allowedExt = array_flip($allowedExt); foreach($_FILES['obrazky']['name'] as $klic => $nazev) { // zde poslané obrázky proměníme na proměnnou $nazev $nazev = htmlspecialchars($nazev, ENT_QUOTES); $fileName = basename(time() . ".pdf"); $fileName = sprintf(time() . ".pdf", pathinfo($nazev, PATHINFO_EXTENSION)); $tmpName = $_FILES['obrazky']['tmp_name'][$klic]; $fileName = htmlspecialchars($fileName, ENT_QUOTES); // kontrola souboru if( !is_uploaded_file($tmpName) || !isset($allowedExt[strtolower(pathinfo($fileName, PATHINFO_EXTENSION))]) ) { // neplatny soubor nebo pripona continue; } // presun souboru if(move_uploaded_file($tmpName, "{$uploadDir}".DIRECTORY_SEPARATOR."{$fileName}")) { ++$counter; } } if ($counter > 0) echo "<hr><p>Úspěšně byl nahrán {$counter} z ".sizeof($_FILES['obrazky']['name'])." obrázků, děkujeme!<br> <br> <b>Odkazy na obrázek</b>:<br> Klikatelný odkaz na obrázek:<br> <a href='http://barak.hrasek.net/$uploadDir/$fileName' target='_blank'>http://barak.hrasek.net/$uploadDir/$fileName</a>"; } ?> |
||
Honzicek84 Profil * |
#5 · Zasláno: 17. 12. 2014, 13:18:47 · Upravil/a: Moderátor (editace znemožněna) 22. 12. 2014, 23:54:01
Ahoj, tohle mi nechce fungovat, účel je takový, že tam přes form vložím soubor (pdf) a dám k němu popis, soubor se uloží na server do složky obrázky a cesta (jmeno souboru $fileName) a popis se uloží do DB
if (!$spojenie) { die('Nemůžu sa připojit na databazi: ' .mysql_error()); } mysql_query('set names utf8'); mysql_query('SET COLLATION_CONNECTION=utf8'); $vybratie = MySQL_Select_Db("d16062_barak"); if (!$vybratie) { die('Nemůžu sa připojit na databazi: ' .mysql_error()); } ?> <form method="post" enctype="multipart/form-data"> <input type="file" name="obrazky[]" /> Popis: <input type="text" name="popis"> <input type="submit" value="Nahrát na server!" /> </form> <?php // konfigurace $uploadDir = 'obrazky'; // adresar, kam se maji nahrat obrazky (bez lomitka na konci) $allowedExt = array('pdf'); // pole s povolenymi priponami // zpracovani uploadu if(isset($_FILES['obrazky']) && is_array($_FILES['obrazky']['name'])) { $counter = 0; $allowedExt = array_flip($allowedExt); foreach($_FILES['obrazky']['name'] as $klic => $nazev) { // zde poslané obrázky proměníme na proměnnou $nazev $nazev = htmlspecialchars($nazev, ENT_QUOTES); $fileName = basename(time() . ".pdf"); $fileName = sprintf(time() . ".pdf", pathinfo($nazev, PATHINFO_EXTENSION)); $tmpName = $_FILES['obrazky']['tmp_name'][$klic]; $fileName = htmlspecialchars($fileName, ENT_QUOTES); // kontrola souboru if( !is_uploaded_file($tmpName) || !isset($allowedExt[strtolower(pathinfo($fileName, PATHINFO_EXTENSION))]) ) { // neplatny soubor nebo pripona continue; } // presun souboru if(move_uploaded_file($tmpName, "{$uploadDir}".DIRECTORY_SEPARATOR."{$fileName}")) { ++$counter; } } if ($counter > 0) $order = "INSERT INTO zapisy (nazev, cesta) VALUES ( '" . mysql_real_escape_string($_POST['popis']) . "', '" . $filename . "' )"; $result = mysql_query($order); //order executes if($result){ echo("<h2>Zápis byl úspěšně zaznamenán</h2>"); } else{ echo('Nebylo nahráno ' .mysql_error()); } ?> <h1> Zápisy ze schůzí: </h1> <?php $srchQ = "SELECT * FROM zapisy ORDER BY id ASC"; $srch = MySQL_Query($srchQ); $rows = MySQL_Num_Rows($srch); if ($rows !== 0): ?> <table style="margin-left: 10px;"width="1100px" border="1xp solid black;"> <?php for ($i=0;$i<$rows;$i++): $zaznam = MySQL_Fetch_Assoc($srch); ?> <tr><td><a href="/obrazky/<?php echo $zaznam['cesta'] ?>.pdf"><?php echo $zaznam['nazev'] ?></a></td><td><a href="upload-smaz.php?akce=<?php echo $zaznam[id] ?>">Smaž</a></td></tr> <?php endfor; ?> </table> <br><br> Moderátor jenikkozak: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
Taps Profil |
Honzicek84,
Pravděpodobně ti v kódu chybí jedna složená závorka, viz níže. <? if (!$spojenie) { die('Nemůžu sa připojit na databazi: ' .mysql_error()); } mysql_query('set names utf8'); mysql_query('SET COLLATION_CONNECTION=utf8'); $vybratie = MySQL_Select_Db("d16062_barak"); if (!$vybratie) { die('Nemůžu sa připojit na databazi: ' .mysql_error()); } ?> <form method="post" enctype="multipart/form-data"> <input type="file" name="obrazky[]" /> Popis: <input type="text" name="popis"> <input type="submit" value="Nahrát na server!" /> </form> <?php // konfigurace $uploadDir = 'obrazky'; // adresar, kam se maji nahrat obrazky (bez lomitka na konci) $allowedExt = array('pdf'); // pole s povolenymi priponami // zpracovani uploadu if(isset($_FILES['obrazky']) && is_array($_FILES['obrazky']['name'])) { $counter = 0; $allowedExt = array_flip($allowedExt); foreach($_FILES['obrazky']['name'] as $klic => $nazev) { // zde poslané obrázky proměníme na proměnnou $nazev $nazev = htmlspecialchars($nazev, ENT_QUOTES); $fileName = basename(time() . ".pdf"); $fileName = sprintf(time() . ".pdf", pathinfo($nazev, PATHINFO_EXTENSION)); $tmpName = $_FILES['obrazky']['tmp_name'][$klic]; $fileName = htmlspecialchars($fileName, ENT_QUOTES); // kontrola souboru if( !is_uploaded_file($tmpName) || !isset($allowedExt[strtolower(pathinfo($fileName, PATHINFO_EXTENSION))]) ) { // neplatny soubor nebo pripona continue; } // presun souboru if(move_uploaded_file($tmpName, "{$uploadDir}".DIRECTORY_SEPARATOR."{$fileName}")) { ++$counter; } } if ($counter > 0) $order = "INSERT INTO zapisy (nazev, cesta) VALUES ( '" . mysql_real_escape_string($_POST['popis']) . "', '" . $filename . "' )"; $result = mysql_query($order); //order executes if($result){ echo("<h2>Zápis byl úspěšně zaznamenán</h2>"); } else{ echo('Nebylo nahráno ' .mysql_error()); } } ?> <h1> Zápisy ze schůzí: </h1> <?php $srchQ = "SELECT * FROM zapisy ORDER BY id ASC"; $srch = MySQL_Query($srchQ); $rows = MySQL_Num_Rows($srch); if ($rows !== 0): ?> <table style="margin-left: 10px;"width="1100px" border="1xp solid black;"> <?php for ($i=0;$i<$rows;$i++): $zaznam = MySQL_Fetch_Assoc($srch); ?> <tr><td><a href="/obrazky/<?php echo $zaznam['cesta'] ?>.pdf"><?php echo $zaznam['nazev'] ?></a></td><td><a href="upload-smaz.php?akce=<?php echo $zaznam[id] ?>">Smaž</a></td></tr> <?php endfor; ?> </table> <br><br> |
||
Honzicek84 Profil * |
#7 · Zasláno: 17. 12. 2014, 13:39:03
Nefunguje Parse error: syntax error, unexpected $end
|
||
lionel messi Profil |
#8 · Zasláno: 17. 12. 2014, 13:43:59
Honzicek84:
„Nefunguje Parse error: syntax error, unexpected $end“ Na koniec Tapsovho kódu pridaj: <?php endif; ?> |
||
Honzicek84 Profil * |
#9 · Zasláno: 17. 12. 2014, 13:49:53
Tohle funguje, ještě dotaz k tomu ted se mi odešle do databáze popis, ale ta cesta (jméno souboru) ne, to bude nějaká drobnost, poradíte?
|
||
Taps Profil |
#10 · Zasláno: 17. 12. 2014, 13:58:50
Honzicek84:
tak do databáze ukládej $fileName a nikoliv $filename |
||
Honzicek84 Profil * |
#11 · Zasláno: 17. 12. 2014, 14:08:33
To jsme ale karkulka, funguje a děkuji
|
||
Časová prodleva: 9 let
|
0