Autor Zpráva
msigmund
Profil
Dobrý den, řeším problém s uploadem obrázků.
Mám ve formuláři :
<input type="file" name="obr1">
<input type="file" name="obr2">
<input type="file" name="obr3">
A zkoušel jsem napsat podmínku, když uživatel dá jen obr1 a ostatní dvě pole nechá prázdné, aby se nahrál do složky pic jen obr1 a do databáze se uložil název obr1, a místo obr2 a obr3, které jsou prázdné, název obrázku obr-neni.gif,který ve složce pic již mám. Když dám všechny 3 obrázky tak se nahraje jen obr3.
if ($obr1 != ""){ 
            
$soubor1_t = $_FILES['obr1']['type'];
$soubor1 = $_FILES['obr1']['name'];
$soubor1_s = $obr_size; 

$cil1 = "pic/".$soubor1;
$nazevSouboru1 = $_FILES['obr1']['tmp_name'];
$copy = move_uploaded_file($nazevSouboru1, $cil1)
or die ("<font face='TAHOMA' SIZE='2' color='#df3131'>Přenesený soubor č1 nelze zkopírovat</font>");
chmod ($cil1, 0644); 

$a1 = "$soubor1"; 

}
else {
$a1 = "obr-neni.gif";
}

if ($obr2 != ""){

$soubor2_t = $_FILES['obr2']['type'];
$soubor2 = $_FILES['obr2']['name'];
$soubor2_s = $obr_size; 

$cil2 = "pic/".$soubor2;
$nazevSouboru2 = $_FILES['obr2']['tmp_name']; 
$copy = move_uploaded_file($nazevSouboru2, $cil2)
or die ("<font face='TAHOMA' SIZE='2' color='#df3131'>Přenesený soubor č1 nelze zkopírovat</font>"); 
chmod ($cil2, 0644); 

$a2 = "$soubor2"; 

}
else {
$a2 = "obr-neni.gif";
}

if ($obr3 != ""){

$soubor3_t = $_FILES['obr3']['type'];
$soubor3 = $_FILES['obr3']['name'];
$soubor3_s = $obr_size; 

$cil3 = "pic/".$soubor3;
$nazevSouboru3 = $_FILES['obr3']['tmp_name']; 
$copy = move_uploaded_file($nazevSouboru3, $cil3)
or die ("<font face='TAHOMA' SIZE='2' color='#df3131'>Přenesený soubor č1 nelze zkopírovat</font>"); 
chmod ($cil3, 0644); 

$a3 = "$soubor3"; 

}
else {
$a3 = "obr-neni.gif";
}


Děkuji všem Msigmund.
fopen
Profil *
to je dosť krkolomný upload, da sa to aj jednoduchšie a efektivnejšie:
foreach($_FILES as $File){
	if ($File['error']===UPLOAD_ERR_OK){
		if(move_uploaded_file($File['tmp_name'], "pic/".$File['name'])==FALSE){
			print'File '.$File['name'].' not uploaded. No space left on the device or insufficient privileges?';
		}else{
			print'File '.$File['name'].' successfully uploaded.';
		}
	}else{
		switch ($File['error']){
			case UPLOAD_ERR_INI_SIZE:
				print'The uploaded file exceeds the upload_max_filesize directive in "php.ini" .';
				break;
			case UPLOAD_ERR_FORM_SIZE:
				print'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.';
				break;
			case UPLOAD_ERR_PARTIAL:
				print'The uploaded file was only partially uploaded.';
				break;
			case UPLOAD_ERR_NO_FILE:
				print'No file was uploaded.';
				break;
			case UPLOAD_ERR_NO_TMP_DIR:
				print'Missing a temporary folder.';
				break;
			case UPLOAD_ERR_CANT_WRITE:
				print'Failed to write file to disk.';
				break;
			case UPLOAD_ERR_EXTENSION:
				print'File upload stopped by extension.';
				break;
			default:
				print'Unknown upload error.';
				break;
		}
	}
}
Alphard
Profil
Doporučuji podívat se na PHP: Uploading multiple files - Manual.
msigmund
Profil
Děkuji za radu, ale prosím ještě o pomoc s chmodem.
Ukládá mi to chmod 600 jak do toho zamontovat aby to ukládalo chmod 664.
Děkuji.
msigmund
Profil
Snad jsem to vyřešil.

$cesta = "pic/".$File['name'];
$return = chmod($cesta, 0664);
msigmund
Profil
Prosím o pomoc, chmod se přepisuje na 664 i u složky pic.

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: