React Academy · Ders

Dosyaları Backend API'sine Yükleme

Dosyaları POST etmek ve yükleme ilerlemesini takip etmek için FormData ve fetch kullanın.

4. ders / 413 adım

Dosyaları Backend API'sine Yükleme, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.

Hoş Geldiniz

Bu derste FormData API'sini ve fetch'i kullanarak dosyaları bir arka uca POST etmeyi, XMLHttpRequest ile yükleme ilerlemesini izlemeyi ve yükleme durumunu React'te göstermeyi öğreneceksiniz.

FormData API'si

FormData, çok parçalı istek gövdeleri oluşturan bir tarayıcı API'sidir; sunucular dosya yüklemeleri için bu biçimi bekler. Dosyayı ve tüm üst veri alanlarını bir FormData nesnesine ekleyin.
const formData = new FormData();
formData.append('file', selectedFile);
formData.append('description', 'Profile photo');

fetch ile Yükleme

FormData nesnesini fetch gövdesi olarak geçirin. Content-Type'ı el ile ayarlamayın; doğru çok parçalı sınırı tarayıcı otomatik olarak belirler.
const response = await fetch('/api/upload', {
  method: 'POST',
  body: formData,
  // Do not set Content-Type header here!
});

Yükleme Durumunu Yönetme

Yükleme durumunu üç durum değişkeniyle izleyin: `uploading` (doğru/yanlış), `progress` (0–100) ve `error` (metin veya null). Döndürücüler, ilerleme çubukları ve hata iletilerini bunlara göre gösterin.
const [uploading, setUploading] = useState(false);
const [progress, setProgress] = useState(0);
const [error, setError] = useState(null);

XMLHttpRequest ile Yükleme İlerlemesi

fetch API'si yükleme ilerlemesi olaylarını desteklemez. Yüzde güncellemelerini almak için XMLHttpRequest'in `upload.onprogress` olayını kullanın.
const xhr = new XMLHttpRequest();
xhr.upload.onprogress = (e) => {
  if (e.lengthComputable) {
    setProgress(Math.round((e.loaded / e.total) * 100));
  }
};
xhr.open('POST', '/api/upload');
xhr.send(formData);

XHR'yi Promise ile Sarmalama

XMLHttpRequest çağrısını bir Promise ile sararak onu await edebilir ve async/await hata yönetimini kullanabilirsiniz.
function uploadFile(file) {
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest();
    xhr.onload = () => resolve(xhr.response);
    xhr.onerror = () => reject(new Error('Upload failed'));
    xhr.upload.onprogress = (e) => setProgress(Math.round(e.loaded / e.total * 100));
    xhr.open('POST', '/api/upload');
    xhr.send(new FormData().set && (() => { const f = new FormData(); f.append('file', file); xhr.send(f); })());
  });
}

Sunucu Yanıtını İşleme

Başarılı bir yüklemeden sonra sunucunun JSON yanıtını ayrıştırın. Kullanıcı arayüzü durumunu döndürülen URL veya ID ile güncelleyin.
const res = await fetch('/api/upload', { method: 'POST', body: fd });
if (!res.ok) throw new Error('Upload failed');
const { url } = await res.json();
setUploadedUrl(url);

Hata Yönetimi

Ağ ve sunucu hatalarını her zaman yakalayın. Kullanıcı dostu bir hata iletisi gösterin ve yeniden denemeye izin verin. catch bloğunda ilerleme ve uploading durumlarını sıfırlayın.
try {
  setUploading(true);
  await uploadToServer(file);
} catch (err) {
  setError(err.message);
} finally {
  setUploading(false);
}

Yüklemeyi İptal Etme

Devam eden bir yüklemeyi iptal etmek için fetch ile bir AbortController kullanın. İptal düğmesinden abort() çağrısını yapabilmek için denetleyiciyi bir ref içinde saklayın.
const abortRef = useRef();

const start = async () => {
  abortRef.current = new AbortController();
  await fetch('/api/upload', { body: fd, signal: abortRef.current.signal });
};
const cancel = () => abortRef.current?.abort();

Birden Çok Dosya Yükleme

Birden çok dosyayı Promise.all kullanarak paralel biçimde veya bir for-of döngüsüyle sıralı olarak yükleyin. Her dosyanın ilerlemesini dosya adına göre anahtarlanmış bir nesneyle ayrı ayrı izleyin.

Hızlı Kontrol

FormData ile fetch kullanırken Content-Type üst bilgisini neden el ile ayarlamamalısınız?

Özet

Yükleme veri gövdeleri oluşturmak için FormData kullanın. Sınırın otomatik oluşturulması için fetch çağrısında Content-Type belirtmeyin. İlerlemeyi izlemek için XMLHttpRequest'in upload.onprogress özelliğini kullanın. Hataları uygun biçimde yönetin ve AbortController ile iptali destekleyin.

Kurs Tamamlandı

Tebrikler! **Kontrol Edilmeyen Bileşenler ve Dosya Yüklemeleri** kursunu tamamladınız. Artık kontrol edilmeyen girdileri, dosya seçimini, sürükleyip bırakmayı ve ilerleme izlemeli çok parçalı yüklemeleri yönetebilirsiniz.
Başlamak ücretsiz

Yapay zeka eğitmeniyle React öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
88
Dersler
324

Sıkça Sorulan Sorular

“Dosyaları Backend API'sine Yükleme” dersi ücretsiz mi?

Evet — “Dosyaları Backend API'sine Yükleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.

“Dosyaları Backend API'sine Yükleme” dersinde ne öğreneceğim?

Dosyaları POST etmek ve yükleme ilerlemesini takip etmek için FormData ve fetch kullanın. React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

React Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Dosyaları Backend API'sine Yükleme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu React Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. useRef ile Denetimsiz Girdiler
  2. Dosya Girdisi ve Dosya Verilerini Okuma
  3. Sürükleyip Bırakarak Dosya Yükleme Arayüzü
  4. Dosyaları Backend API'sine Yükleme
← React Academy Sayfasına Dön