| 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: 12 let
|
|||
0
).