Autor Zpráva
pito
Profil
Zdravím,
Mám formulář přes který jde odesílat soubor, jenže mi to nějak nefunguje.Díval jsem se kde je chyba,ale nemůžu na to přijít.
Do databáze mi to pošle jen jméno,ale název toho souboru už ne a na server se mi soubor už vůbec neodešle.
Jinak mi to píše chybu: There was an error uploading the file, please try again!ok

chyba bude zřejmě někde tady:
<?php 
include('config.php');

$target_path = "upload/";
$target_path = $target_path . basename( $_FILES['file_up[]']['name']); 
 
 
if(move_uploaded_file($_FILES['file_up[]']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['file_up[]']['name']). 
    " has been uploaded";
} else{
    echo "There was an error uploading the file, please try again!";
}
 
$nazev =  basename( $_FILES['file_up[]']['name']) ; 
 
$jmeno = $_POST['jmeno'];

if($jmeno!="" ){ 
        mysql_query("INSERT INTO vasefoto (jmeno, nazev) VALUES ('$jmeno','$nazev')"); 
        echo "ok";
#        header('Location: ok.php');
        die;
    } else {
        echo "bad";
#        header('Location: bad.php');
    }

?>
Alphard
Profil
'file_up[]' vypadá dost divně.

basename( $_FILES['file_up[]']['name'])
Co si od toho slibujete?
pito
Profil
upravil jsem to na 'file_up' jenže píše to další chyby

Warning: basename() expects parameter 1 to be string, array given in /data/web/virtuals/10955/virtual/www/fotogalerie/upfoto.php on line 5
Warning: move_uploaded_file() expects parameter 1 to be string, array given in /data/web/virtuals/10955/virtual/www/fotogalerie/upfoto.php on line 8
There was an error uploading the file, please try again!
Warning: basename() expects parameter 1 to be string, array given in /data/web/virtuals/10955/virtual/www/fotogalerie/upfoto.php on line 15
ok



myslíte, že to dělá to basename?
Alphard
Profil
Já především nechápu, proč tam vůbec basename je. $_FILES['file_up[]']['name'] obsahuje původní název souboru, jak vám má basename pomoct?

$target_path = "upload/";
$target_path .= $_FILES['file_up']['name'];  // nechat diakritiku ale není dobrý nápad
 
 
if(move_uploaded_file($_FILES['file_up']['tmp_name'], $target_path)) {
    echo "The file $_FILES[file_up][name] has been uploaded";
} else{
    echo "There was an error uploading the file, please try again!";
}
Keeehi
Profil
Alphard:
Dle chyb bych to viděl spíše na něco takového:
$target_path = "upload/";
for( $i=0 ; $i<count($_FILES['file_up']['tmp_name']) ; $i++ ) {
    if(move_uploaded_file($_FILES['file_up']['tmp_name'][$i], $target_path.$_FILES['file_up']['name'][$i])) {
        echo "The file $_FILES[file_up][name][$i] has been uploaded";
    } else{
        echo "There was an error uploading the file, please try again!";
    }
}
pito
Profil
Tak nakonec mi doporučili lepší upload od php.vrana.cz ktery je zde PHP upload obrázku na server a uložení cesty do databáze
pito
Profil
Použil jsem tedy to od toho vrany.
Ale nějak mi to nechce zaznamenat jméno obrázku.

Ve formuláři mám změnu.Přidal jsem si tam onclick který po kliknutí mi přidává řádek Obrázek: <input type=file name=image[] accept=image>

<form name="vlozit"  action="<?php echo $_SERVER["PHP_SELF"];?>" method="post" enctype="multipart/form-data">
  <table id="tabulka" border="0">
Jméno: <input type="text" name="jmeno" class="form"> <font size="1"><i>(Jméno bude zveřejněno v galerii)</i></font><br>
Obrázek: <input type="file" name="image[]" accept="image">

</table>
<tr>
  <td><input type="submit" name="ok" value="Uložit"></td>
 </tr>
</table>  
</form>
 <br>
    <a href="#" onclick="return novy_radek();">Přidej řádek</a>

Jenomže když to chci odeslat tak mi to nezjistí jméno obrázku.Myslím si že tam vadí právě ty závorky u name. name="image[]"

V JS to mám takhle:
 <script type="text/javascript">
      function novy_radek(){
        var radku = document.getElementById('tabulka').rows.length;
        var radek=document.getElementById('tabulka').insertRow(radku);
        var bunka=radek.insertCell(0);
        bunka.innerHTML="Obrázek: <input type=file name=image[] accept=image>";
        return false;
      }
    </script>

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: