<?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { $uploadDir = 'uploads/'; if (!is_dir($uploadDir)) { mkdir($uploadDir, 0755, true); } $response = []; foreach ($_FILES['image']['name'] as $key => $fileName) { $uniqueId = uniqid(); $fileExtension = pathinfo($fileName, PATHINFO_EXTENSION); $shortFileName = $uniqueId . '.' . $fileExtension; $targetFile = $uploadDir . $shortFileName; $imageFileType = strtolower($fileExtension); $allowedTypes = ['jpg', 'jpeg', 'png', 'gif']; if (!in_array($imageFileType, $allowedTypes)) { $response[] = ['success' => false, 'message' => 'Sadece JPG, JPEG, PNG ve GIF dosyaları yüklenebilir.']; continue; } if ($_FILES['image']['size'][$key] > 5 * 1024 * 1024) { $response[] = ['success' => false, 'message' => 'Dosya boyutu 5MB\'yi aşamaz.']; continue; } if (move_uploaded_file($_FILES['image']['tmp_name'][$key], $targetFile)) { file_put_contents($targetFile . '.time', time()); $shortUrl = 'http://' . $_SERVER['HTTP_HOST'] . '/uploads/' . $shortFileName; $response[] = [ 'success' => true, 'url' => $shortUrl, 'preview' => $shortUrl ]; } else { $response[] = ['success' => false, 'message' => 'Resim yüklenirken bir hata oluştu.']; } } echo json_encode($response); exit; } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CorexDepo | Hızlı Resim Yükle</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"> <style> body { background: linear-gradient(135deg, #6e7dff, #1c92d2); font-family: 'Roboto', sans-serif; } .container { max-width: 700px; margin: auto; background: #fff; padding: 40px; border-radius: 10px; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); } h1 { text-align: center; color: #333; margin-bottom: 30px; } .progress-container { display: none; margin-top: 20px; } .progress { height: 25px; border-radius: 12px; overflow: hidden; } .progress-bar { transition: width 0.4s ease-in-out; } .image-preview-container { display: flex; flex-wrap: wrap; gap: 20px; margin-top: 30px; } .image-item { text-align: center; border: 1px solid #ddd; border-radius: 8px; padding: 15px; background: #f9f9f9; margin-bottom: 20px; } .image-item img { max-width: 100%; border-radius: 8px; margin-bottom: 10px; } .copy-btn { background: #0d6efd; color: #fff; border: none; padding: 8px 12px; cursor: pointer; border-radius: 4px; font-size: 0.9rem; transition: background-color 0.3s; } .copy-btn:hover { background: #0b5ed7; } </style> </head> <body> <div class="container"> <h1>Hızlı Resim Yükleme</h1> <form id="uploadForm" enctype="multipart/form-data" class="mb-4"> <div class="mb-3"> <label for="image" class="form-label">Resim Seçin (En Fazla 7 Adet):</label> <input type="file" name="image[]" id="image" class="form-control" multiple required> </div> <button type="submit" class="btn btn-primary w-100">Yükle</button> </form> <div class="progress-container"> <div class="progress"> <div class="progress-bar bg-success" role="progressbar" style="width: 0%;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div> </div> <p class="text-center mt-2" id="loadingText">Yükleme Başladı...</p> </div> <div class="image-preview-container" id="previewContainer"></div> </div> <script> const uploadForm = document.getElementById('uploadForm'); const progressContainer = document.querySelector('.progress-container'); const progressBar = document.querySelector('.progress-bar'); const loadingText = document.getElementById('loadingText'); const previewContainer = document.getElementById('previewContainer'); const imageInput = document.getElementById('image'); uploadForm.addEventListener('submit', async (e) => { e.preventDefault(); if (imageInput.files.length > 7) { alert('En fazla 7 dosya yükleyebilirsiniz.'); return; } const formData = new FormData(uploadForm); progressContainer.style.display = 'block'; progressBar.style.width = '0%'; loadingText.textContent = 'Yükleme Başladı...'; const xhr = new XMLHttpRequest(); xhr.open('POST', '', true); xhr.upload.onprogress = (event) => { if (event.lengthComputable) { const percentComplete = Math.round((event.loaded / event.total) * 100); progressBar.style.width = `${percentComplete}%`; loadingText.textContent = `Yükleniyor: %${percentComplete}`; } }; xhr.onload = () => { if (xhr.status === 200) { const result = JSON.parse(xhr.responseText); previewContainer.innerHTML = ''; result.forEach(file => { const imageItem = document.createElement('div'); imageItem.classList.add('image-item'); if (file.success) { imageItem.innerHTML = ` <img src="${file.preview}" alt="Önizleme"> <input type="text" value="${file.url}" class="form-control mb-2" readonly> <button class="copy-btn" onclick="copyToClipboard('${file.url}')">Linki Kopyala</button> `; } else { imageItem.textContent = file.message; } previewContainer.appendChild(imageItem); }); loadingText.textContent = 'Yükleme Tamamlandı!'; } else { loadingText.textContent = 'Sunucu Hatası.'; } }; xhr.onerror = () => { loadingText.textContent = 'Yükleme Başarısız.'; }; xhr.send(formData); }); function copyToClipboard(url) { navigator.clipboard.writeText(url).then(() => alert('Link kopyalandı!')); } </script> </body> </html>
Hızlı Resim Yükleme Scripti ( Hazır Kod )
6
●216
- 30-11-2024, 12:57:54Merhaba, İşletmem için geliştirdiğim bir depo yönetimi yazılımı için yardımcı araç olarak geliştirdiğim hızlı resim yükleme yazılımının ilk halini ücretsiz paylaşıyorum. Çok basit ve gelişime açık index.php kodları :
- 30-11-2024, 13:42:58mertkann adlı üyeden alıntı: mesajı görüntüle