Document Uploader elementi, kullanıcıların DMS’e dosya yüklemesini sağlayan, drag & drop destekli bir UI elementidir. Dosyalar, chunked upload (parçalı yükleme) yöntemi ile backend’e aktarılır. Bu sayede büyük dosyalar parça parça gönderilerek daha güvenli ve stabil bir yükleme süreci sağlanır.
Bu element sayesinde kullanıcılar dosyaları sürükle-bırak veya dosya seçme yöntemiyle ekleyebilir. Yükleme öncesinde dosya tipi doğrulaması yapılır ve güvenlik amacıyla magic byte analizi uygulanır. Böylece yalnızca izin verilen ve güvenli dosyaların sisteme yüklenmesi sağlanır.
Document Uploader elementi; belge yönetim sistemleri, başvuru ekranları, destek talepleri, onboarding akışları ve klasör bazlı dosya yükleme gerektiren senaryolarda kullanılabilir.
Document Uploader elementi aşağıdaki senaryolarda yaygın olarak kullanılır:
Document Uploader elementi dosya yükleme süreçleri için aşağıdaki temel özellikleri sunar:
DocumentUploader elementini seçtiğinizde, sağ tarafta yer alan Properties paneli üzerinden yükleme davranışını ve kullanıcıya gösterilecek içerikleri yapılandırabilirsiniz.
Bu elementte öne çıkan ayarlar aşağıdaki gibidir:

folderId: Yüklenen dosyaların kaydedileceği hedef klasörün ID bilgisini belirtir. Directory elementinin selectedFolderId binding’ine bağlanabilir. Bu alan tanımlandığında, yüklenen tüm dokümanlar ilgili klasör altında oluşturulur.
documentId: Yükleme işleminin mevcut bir doküman üzerinde mi yoksa yeni bir doküman olarak mı gerçekleşeceğini belirleyen ID bilgisidir.
uploadMode: Yükleme davranışını belirler.
maxFileSizeMb: Tek bir dosya için izin verilen maksimum boyutu MB cinsinden belirler. Bu sınırı aşan dosyalar yüklenmez ve kullanıcıya uyarı gösterilir.
maxFileCount: Aynı anda yükleme kuyruğuna alınabilecek maksimum dosya sayısını belirler. Belirlenen sınır aşıldığında fazla dosyalar reddedilir.
chunkSizeMb: Dosyaların backend’e gönderilirken kaç MB’lık parçalara bölüneceğini belirler. Varsayılan değer 10 MB’tır. Büyük dosyaların daha stabil yüklenmesi için kullanılır.
Label: Drag & drop alanında kullanıcıya gösterilen ana metindir. Kullanıcıya bu alanın ne amaçla kullanıldığını açık şekilde anlatmak için kullanılır.
Hint: Kullanıcıya ek bilgilendirme sunan yardımcı metindir. Desteklenen dosya tipleri, maksimum boyut veya kullanım amacı gibi bilgiler burada gösterilebilir.
autoClearSeconds: Başarılı yüklemelerin, belirtilen süre (saniye) sonunda listeden otomatik olarak kaldırılmasını sağlar.
maxVisibleEntries: Dosya listesinde aynı anda görüntülenecek maksimum satır sayısını belirler. Fazla kayıtlar scroll ile görüntülenir.
Language: Yükleme bileşeninin arayüz dilini belirler.
DocumentUploader elementi, kullanıcı etkileşimlerine bağlı olarak aksiyon tetikleyebilen event’ler sunar. Bu event’ler, yükleme sürecini kontrol etmek ve ek iş akışları tanımlamak için kullanılabilir.
onUploadFinish: Kuyruktaki tüm dosyaların yükleme işlemi tamamlandığında (başarılı veya hatalı fark etmeksizin) tetiklenir. Genellikle yükleme sonrası veri yenileme işlemleri için kullanılır. Örneğin, Document ağacını güncellemek amacıyla GetDocumentTree aksiyonu bu event üzerinden çağrılabilir.
onFileSelect: Bir veya daha fazla geçerli dosya yükleme kuyruğuna eklendiğinde tetiklenir. Kullanıcının dosya seçimi yaptığı anı yakalamak ve buna bağlı kontroller veya bilgilendirme işlemleri gerçekleştirmek için kullanılabilir.
onUploadStart: Kullanıcı “Upload” butonuna tıklayıp yükleme sürecini başlattığında tetiklenir. Yükleme öncesi hazırlık işlemleri, loglama veya kullanıcıya bilgilendirme gösterme gibi senaryolarda kullanılabilir.
DocumentUploader elementi, Ant Design Dragger bileşeni üzerine inşa edilmiştir ve aşağıdaki özellikleri sunar:
Çoklu dosya seçimi: Multiple özelliği aktif olarak çalışır. Kullanıcı birden fazla dosyayı aynı anda sürükleyip bırakabilir veya seçebilir.
Accept filtresi: İzin verilen dosya uzantıları otomatik olarak accept HTML Attribute’una aktarılır. Bu sayede tarayıcı yalnızca desteklenen dosya tiplerini seçilebilir olarak gösterir.
İstemci taraflı doğrulama: Yükleme öncesinde her dosya için aşağıdaki kontroller yapılır:
Hata durumunda kullanıcı bilgilendirme: Reddedilen dosyalar için kullanıcıya toast bildirimleri gösterilir. Hata nedenine göre farklı mesajlar sunulur:
Gösterilen bildirimler yaklaşık 3.2 saniye sonra otomatik olarak kapanır.
DocumentUploader elementi, özellikle büyük dosyaların güvenli ve stabil şekilde yüklenebilmesi için chunked upload (parçalı yükleme) mekanizmasını kullanır.
Yeni doküman yükleme (uploadMode: "newDocument")
Yükleme süreci aşağıdaki adımlardan oluşur:
1. Init (Başlatma): POST /documentmanagement/chunks/init. Dosya adı, MIME tipi, hedef klasör, toplam parça sayısı ve boyut bilgileri gönderilir. Sunucu bu isteğe karşılık bir uploadId döner.
2. Chunk Gönderimi: POST /documentmanagement/chunks/{uploadId}/{chunkIndex} Dosya, belirlenen chunk boyutuna göre parçalara ayrılır ve her parça application/octet-stream formatında sırayla gönderilir. Her parça sonrası ilerleme çubuğu güncellenir.
3. Finalize (Tamamlama): POST /documentmanagement/chunks/{uploadId}/finalize
Tüm parçalar gönderildikten sonra sunucu bu parçaları birleştirir, dokümanı oluşturur ve documentId bilgisini döner.
4. Hata Durumu: Yükleme sürecinin herhangi bir adımında hata oluşursa: DELETE /documentmanagement/chunks/{uploadId} çağrısı ile yükleme oturumu temizlenir.
Versiyon yükleme (uploadMode: "newVersion" / "draft")
Bu modlarda chunked upload kullanılmaz. Yükleme işlemi doğrudan aşağıdaki endpoint üzerinden tek seferde gerçekleştirilir:
PUT /documentmanagement/{documentId}/file
Dosya, FormData formatında gönderilir ve mevcut doküman üzerinde versiyon veya taslak olarak kaydedilir.
DocumentUploader elementi, aşağıdaki dosya kategorilerini destekler:
Her yükleme satırında, yapılan işleme göre görsel bilgi etiketleri gösterilir. Bu etiketler, yükleme tipini kullanıcıya açık şekilde ifade eder:
Yükleme tamamlandıktan sonra başarılı yüklemeler için “Clear completed” butonu görüntülenir.
Bu butona tıklandığında, başarılı şekilde yüklenmiş tüm dosyalar listeden kaldırılır.
autoClearSeconds özelliği tanımlanmışsa, başarılı yüklemeler belirtilen süre sonunda otomatik olarak listeden temizlenir.
Senaryo: Kullanıcı, sol panelde yer alan “Sözleşmeler” klasörünü seçer ve bu klasöre yeni bir PDF dokümanı yükler.
Akış
1. Klasör Seçimi: Kullanıcı Directory üzerinden bir klasör seçtiğinde:
Directory.onFolderSelect
2. Dosya Seçimi: Kullanıcı dosyayı sürükleyip bırakır veya manuel olarak seçer:
DocumentUploader.onFileSelect
→ Seçilen dosyalar yükleme kuyruğuna eklenir
→ Kullanıcı, gerekirse dosya adını düzenleyebilir
3. Yükleme Başlatma: Kullanıcı “Upload” butonuna tıklar:
DocumentUploader.onUploadStart
→ Yükleme süreci başlatılır
→ Her dosya için ilerleme çubuğu gösterilir
4. Yükleme Tamamlanması: Tüm dosyaların yüklenmesi tamamlandığında:
DocumentUploader.onUploadFinish