Dropzone.js kütüphanesi Örneği
Web uygulamalarımızda sıkça beğenerek kullandığımız Dropzone.js kütüphanesinin pratik olarak kendi uygulamalarımızda nasıl kullanabiliriz? Yüklemek istenilen dosyalar gerek boyut gerekse dosya türüne göre nasıl filtre edilebilir konularında aşağıdaki script yapısı size bir fikir verecektir.
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dropzone.js Örneği</title>
<!-- Dropzone.js için gerekli CSS dosyası -->
<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.2/dropzone.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<!-- Dropzone.js için gerekli JavaScript dosyası -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.2/dropzone.min.js" ></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
<style>
.dz-remove
{
display:inline-block !important;
width:1.2em;
height:1.2em;
position:absolute;
top:5px;
right:5px;
z-index:1000;
font-size:1.2em !important;
line-height:1em;
text-align:center;
font-weight:bold;
border:none !important;
// border-radius:1.2em;
//color:gray;
background-color:white;
opacity:.5;
}
.dz-remove:hover
{
text-decoration:none !important;
opacity:1;
}
</style>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<h1>Dropzone.js Örneği</h1>
<!-- Dosya yükleme alanını içeren div -->
<form action="." class="dropzone" id="my-dropzone"></form>
<!-- Dropzone.js konfigürasyonu -->
<script>
var extList=[".jpg", ".jpeg", ".png", ".pdf", ".doc", ".docx", ".xls", ".xlsx"];
function kontrol(keyword) {
for (var i = 0; i < extList.length; i++) {
if (extList[i] === keyword) {
return true;
}
}
return false;
}
Dropzone.autoDiscover = false; // Dropzone'un otomatik başlatılmasını devre dışı bırak
// Dropzone.js yapılandırması
var myDropzone = new Dropzone("#my-dropzone", {
url: "/dosya-yukle", // Dosyanın yükleneceği URL
method: "post", // Yükleme işlemi için HTTP methodu
paramName: "dosya", // Sunucuya gönderilecek dosya parametresi adı
maxFilesize: 1, // Maksimum dosya boyutu (MB cinsinden)
acceptedFiles: extList.toString(), // Kabul edilen dosya türleri
addRemoveLinks: true, // Dosya eklerken kaldırma bağlantılarını göster
dictDefaultMessage: '<i class="fa fa-cloud-upload fa-5x text-primary" aria-hidden="true"></i><br><span class="text-muted">Lütfen yüklemek istediğiniz dosyaları bu alana sürükleyip bırakın</span>',
dictRemoveFile: '<i class="fa fa-trash text-danger eksiMargin" aria-hidden="true"></i>', // Kaldırma bağlantısının metni
dictCancelUpload: "Yüklemeyi İptal Et", // Yüklemeyi iptal etme bağlantısının metni
dictFileTooBig: "Dosya boyutu çok büyük ({{filesize}}MB). Maksimum dosya boyutu: {{maxFilesize}}MB.", // Maksimum dosya boyutu hatası
accept: function (file, done) {
// eğer belirli uzantıda ki dosyaları yüklemek istiyorsak bu fonksiyonu kullanabiliriz, aksi taktirde direk bu bloğu silebilir
// yada bu bloğu boşaltabiliriz, ben sadece fotoğraf yükletmek istediğim için bu örnekten devam ediyorum.
var extension = file.name.substr((file.name.lastIndexOf('.') + 1)).toLowerCase();
let status=Boolean(kontrol('.'+extension));
if(status) {
done();
}else{
done('.'+extension + ' Not Valid Extension');
}
},
success: function (file, response) {
// Yükleme başarılı olduğunda yapılacak işlemler
console.log(response);
},
removedfile: function(file) {
//var name = file.name;
var _ref;
return (_ref = file.previewElement) != null ? _ref.parentNode.removeChild(file.previewElement) : void 0;
},
error: function (file, response) {
// Yükleme hatası olduğunda yapılacak işlemler
console.log("Hata:" + response);
if (!file.accepted) this.removeFile(file);
}
});
</script>
<!-- Özel preview-template -->
<div id="preview-template" style="display:none;" class="dz-preview dz-file-preview">
<div class="dz-preview dz-file-preview">
<div class="dz-details">
<div class="dz-filename"><span data-dz-name></span></div>
<div class="dz-size" data-dz-size></div>
<img data-dz-thumbnail />
</div>
<a id="dz-remove" href="javascript:undefined;" data-dz-remove>Remove <-- here</a>
<div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>
<div class="dz-success-mark"><span>✔</span></div>
<div class="dz-error-mark"><span>✘</span></div>
<div class="dz-error-message"><span data-dz-errormessage></span></div>
<div><img src="remove.png" alt="Click me to remove the file." data-dz-remove /></div>
</div>
</div>
</body>
</html>