Autor Zpráva
Honzicek84
Profil *
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 *
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 *
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 *
Nefunguje Parse error: syntax error, unexpected $end
lionel messi
Profil
Honzicek84:
Nefunguje Parse error: syntax error, unexpected $end
Na koniec Tapsovho kódu pridaj:
<?php endif; ?>
Honzicek84
Profil *
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
Honzicek84:
tak do databáze ukládej $fileName a nikoliv $filename
Honzicek84
Profil *
To jsme ale karkulka, funguje a děkuji

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: