У меня есть простая форма для загрузки продуктов в базу данных: имя и образ. Для имени я использую стандартное текстовое поле ввода, а для изображения я использую класс class.upload.php для изменения размера и переименования.
Это будет работать нормально, но если я использую имя продукта со слэшем внутри, что-то вроде: статья 6/10 - 10/10 - 20/10 отправляет меня на крушение класса для изменения размера изображения. Не соответствует указанным размерам, и я всегда переименовал его в 10.jpg вместо этого как-то вроде: 03110e1afaf5c168e83a0cf18eed368e.jpg
Итак, статья: 610 - 1010 - 2010 работает
статья: 6/10 - 10/10 - 20/10 не работает
Это сценарий, который я использую:
function addProduct()
{
include('class.upload.php');
$catId = $_POST['cboCategory'];
$name = $_POST["txtName"];
$width = 800;
$immagine = $_FILES['fleImage']['tmp_name'];
$dimensioni = getimagesize($immagine);
$larghezza = $dimensioni[0];
$altezza = $dimensioni[1];
if ($larghezza>$width)
{
$db_name = str_replace(" ","_",$name);
$image1 = md5(rand() * time()) . ".$db_name";
$fileName = pathinfo($image1, PATHINFO_FILENAME );
$handle = new upload($_FILES['fleImage']);
if ($handle->uploaded) {
$handle->file_new_name_body = $fileName;
$handle->image_resize = true;
$handle->image_x = 800;
$handle->image_ratio_y = true;
$handle->process('../../images/product/');
// thumbnail
$db_name = str_replace(" ","_",$name);
$image2 = md5(rand() * time()) . ".$db_name";
$thumb = pathinfo($image2, PATHINFO_FILENAME );
$handle->file_new_name_body = $thumb;
$handle->image_resize = true;
$handle->image_ratio_crop = true;
$handle->image_x = 360;
$handle->image_y = 270;
$handle->process('../../images/product/');
if ($handle->processed) {
// header("Location: index.php");
$handle->clean();
} else {
echo 'error : ' . $handle->error;
}
}
$thumbnail = $thumb.'.jpg';
$main_image = $fileName.'.jpg';
$sql = "INSERT INTO tbl_product (cat_id, pd_name, pd_image, pd_thumbnail, pd_date)
VALUES ('$catId', '$name', '$main_image', '$thumbnail', NOW())";
$result = dbQuery($sql);
header("Location: index.php?catId=$catId");
}
}
$image1 = md5(rand() * time()) . ".$db_name";
В этот момент $ image1 содержит что-то вроде "03110e1afaf5c168e83a0cf18eed368earticle6/10_-10/10-_20/10"
$fileName = pathinfo($image1, PATHINFO_FILENAME );
pathinfo разрезает все, кроме имени файла, в этом случае $ filename == "10" Позже вы присоедините окончание ".jpg"