| Autor | Zpráva | ||
|---|---|---|---|
| Jan Žák Profil |
#1 · Zasláno: 8. 5. 2019, 10:42:41
Dobrý den všem,
chtěl bych vás požádat o pomoc. Přes script, který není můj, ale plně vyhovuje můj potřebám nahrání obrázku a vytvoření náhledu nahrávám na testovacím locahostu obrázky. Funkce vždy uloží obrázek pod původním názvem, což bych chtěl změnit, aby byl místo názvu datum a čas, třeba za použití php funkce date(). Bohužel se mi to nedaří změnit, pomohl by někdo? Děkuji moc. Funkce zde function cwUpload($field_name = '', $target_folder = '', $file_name = '', $thumb = FALSE, $thumb_folder = '', $thumb_width = '', $thumb_height = ''){
//folder path setup
$target_path = $target_folder;
$thumb_path = $thumb_folder;
//file name setup
$filename_err = explode(".",$_FILES[$field_name]['name']);
$filename_err_count = count($filename_err);
$file_ext = $filename_err[$filename_err_count-1];
if($file_name != ''){
$fileName = $file_name.'.'.$file_ext;
}else{
$fileName = $_FILES[$field_name]['name'];
}
//upload image path
$upload_image = $target_path.basename($fileName);
//upload image
if(move_uploaded_file($_FILES[$field_name]['tmp_name'],$upload_image))
{
//thumbnail creation
if($thumb == TRUE)
{
$thumbnail = $thumb_path.$fileName;
list($width,$height) = getimagesize($upload_image);
$thumb_create = imagecreatetruecolor($thumb_width,$thumb_height);
switch($file_ext){
case 'jpg':
$source = imagecreatefromjpeg($upload_image);
break;
case 'jpeg':
$source = imagecreatefromjpeg($upload_image);
break;
case 'png':
$source = imagecreatefrompng($upload_image);
break;
case 'gif':
$source = imagecreatefromgif($upload_image);
break;
default:
$source = imagecreatefromjpeg($upload_image);
}
imagecopyresized($thumb_create,$source,0,0,0,0,$thumb_width,$thumb_height,$width,$height);
switch($file_ext){
case 'jpg' || 'jpeg':
imagejpeg($thumb_create,$thumbnail,100);
break;
case 'png':
imagepng($thumb_create,$thumbnail,100);
break;
case 'gif':
imagegif($thumb_create,$thumbnail,100);
break;
default:
imagejpeg($thumb_create,$thumbnail,100);
}
}
return $fileName;
}
else
{
return false;
}
}Volání pak zde $photo_place_id = isset($_POST['photo_place_id'])? intval($_POST['photo_place_id']) : 0;
$photo_name = mysqli_real_escape_string($db->link, $_POST['photo_name']);
$photo_description = mysqli_real_escape_string($db->link, $_POST['photo_description']);
// make sure that all fields in the form are filled out
if ( $photo_name == "") {
header("Location: photo-create.php?msg=".urlencode('Vyplňte <strong>Název</strong>!'));
exit;
}
if ( $photo_description == "") {
header("Location: photo-create.php?msg=".urlencode('Vyplňte <strong>Krátký popis</strong>!'));
exit;
}
// call thumbnail creation function and store thumbnail name
$upload_img = cwUpload('photo_pic','../pictures/','',TRUE,'../pictures/thumbs/','450','300');
// full path of the thumbnail image
$thumb_src = '../pictures/thumbs/'.$upload_img;
// insert data to DB :)
$query = "INSERT INTO places_photo (photo_place_id, photo_name, photo_description, photo_pic, photo_thumb, created) VALUES ('$photo_place_id', '$photo_name', '$photo_description', '$upload_img', '$upload_img', NOW())";
$create = $db->insert($query); |
||
| Keeehi Profil |
#2 · Zasláno: 8. 5. 2019, 10:58:43
Třetím parametrem se určuje jméno souboru. Tak si ho vyplň čím chceš. Nic složitého to není.
|
||
| Jan Žák Profil |
#3 · Zasláno: 8. 5. 2019, 12:23:20
Keeehi:
Ano to je pravda, ale to se nehodí pro více fotek, třeba do alba a to je, co chci vyřešit, mít unikátní název pro každou fotku. |
||
| N71 Profil * |
#4 · Zasláno: 8. 5. 2019, 14:16:38
No tak si uprav proměnnou
$upload_image na to co potřebuješ. basename($fileName) nahraď za svůj název podle potřeby.
|
||
| Kajman Profil |
#5 · Zasláno: 8. 5. 2019, 20:28:17
Jan Žák:
„co chci vyřešit, mít unikátní název pro každou fotku“ Můžete udělat insert dat o fotce bez cesty. Zjistit si získané id. To použít pro název nebo část názvu, aby to bylo jedinečné. Poté udělat update řádku s nastavením cest náhledu a obrázku a třeba i příznakem, že obrázek není rozpracovaný a podařilo se ho v pořádku nahrát. Pokud tam bude hodně fotek, tak v některých filesystémech je lepší dělat nějakou adresářovou strukturu (např. rok/mesic nebo náhodný kousek řetězce), aby webserver vracel obrázky rychleji. |
||
| Keeehi Profil |
#6 · Zasláno: 9. 5. 2019, 10:54:04
„Ano to je pravda, ale to se nehodí pro více fotek, třeba do alba a to je, co chci vyřešit, mít unikátní název pro každou fotku.“
Jak to? Psal jsi, že tam chceš mít v názvu souboru datum a čas, tak si ho tam dej. Pokud budeš každou fotku nahrávat v jiný čas, budeš mít unikátní název. $upload_img = cwUpload('photo_pic','../pictures/',date('Y-m-d_H-i-s'),TRUE,'../pictures/thumbs/','450','300');Pokud chceš náhodný řetězec, můžeš použít bin2hex(random_bytes(20)). Pravděpodobnost, že by se náhodou vygenerovaly dva stejné názvy je miniaturní. Ale pokud si chceš být úplně jistý, tak není nic jednoduššího, než si zkontrolovat zda takový soubor už náhodou neexistuje (file_exists) a případně vygenerovat další náhodný řetězec.
|
||
|
Časová prodleva: 6 let
|
|||
0