v2.5.2
Giriş yap

PDO ile resim ve video yükleme

rennie
90 defa görüntülendi
header('Content-Type: application/json');

$dsn = "mysql:host=localhost;dbname=pukkymukky;charset=utf8mb4";
$user = "root";
$pass = "1256";

try {
    $db = new PDO($dsn, $user, $pass, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
} catch (Exception $e) {
    echo json_encode(['status'=>'error','message'=>'DB_CONNECTION_ERROR']);
    exit;
}

function createFolder($path){
    if(!is_dir($path)) mkdir($path, 0777, true);
}

// ALANLAR
$name   = trim($_POST['name'] ?? '');
$breed  = trim($_POST['breed'] ?? '');
$type   = trim($_POST['type'] ?? '');
$age    = trim($_POST['age'] ?? '');
$desc   = trim($_POST['description'] ?? '');
$folder = $_POST['folder'] ?? '';
$care4  = isset($_POST['care4life']) ? 1 : 0;

// DOSYA VAR MI?
$hasFile = false;
if(isset($_FILES['media']) && !empty($_FILES['media']['name'][0])){
    foreach($_FILES['media']['name'] as $i => $filename){
        if($_FILES['media']['error'][$i] === 0 && !empty($filename)){
            $hasFile = true;
            break;
        }
    }
}

// GEREKLİ ALANLAR KONTROL
if(empty($name) || empty($folder) || !$hasFile){
    echo json_encode(['status'=>'error','message'=>'Lütfen gerekli alanları doldurun (Ad, Kategori, Resim/Video)']);
    exit;
}

// KLASÖR YOLU
$basePath = ($folder === "galeri") ? "images/galeri/" : "images/barinak/";
$basePath .= strtolower(str_replace(' ', '_', $name));
createFolder($basePath);

// KABUL EDİLEN UZANTILAR
$allowedImage = ['jpg','jpeg','png','gif','webp'];
$allowedVideo = ['mp4','webm','mov','avi','mkv'];

$uploadedFiles = [];
foreach($_FILES['media']['name'] as $i => $filename){
    if($_FILES['media']['error'][$i] === 0 && !empty($filename)){
        $tmp = $_FILES['media']['tmp_name'][$i];
        $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));

        // Dosya tipi kontrol
        if(!in_array($ext, array_merge($allowedImage, $allowedVideo))){
            continue; // geçersiz uzantıyı atla
        }

        $newName = date('Ymd_His_') . rand(1000,9999) . '.' . $ext;
        $dest = $basePath . '/' . $newName;

        if(move_uploaded_file($tmp, $dest)){
            $uploadedFiles[] = $newName;
        }
    }
}

if(empty($uploadedFiles)){
    echo json_encode(['status'=>'error','message'=>'Geçerli bir resim veya video yüklemediniz.']);
    exit;
}

// JSON ENCODE
$filesJson = json_encode($uploadedFiles, JSON_UNESCAPED_UNICODE);

// VERİTABANINA EKLE
$sql = "INSERT INTO kopekler (name, breed, type, age, description, folder, care4life, media) VALUES (?,?,?,?,?,?,?,?)";
$stmt = $db->prepare($sql);

try {
    $stmt->execute([$name, $breed, $type, $age, $desc, $folder, $care4, $filesJson]);
    echo json_encode(['status'=>'success','message'=>'İşlem tamamlandı']);
} catch (Exception $e) {
    echo json_encode(['status'=>'error','message'=>'SQL Hatası: '.$e->getMessage()]);
}

Arkadaşlar böyle bir yapım var. Bir barınak sitesi için fotoğraf ve video yükleme scripti.
Ancak sorunum şu: Resim ve video aynı anda yüklenmiyor Hata veriyor. Tüm alanları doldurun diye.
Çözemedim, yardımcı olur musunuz ? Nerede hata yapıyorum.

Cevap yaz
Cevaplar (0)
Henüz kimse cevap yazmadı. İlk cevap yazan sen ol!