Proje: Okul B2B App · Hub: Okul B2B App — Incidents

Android FormData Upload “Network request failed”

Kaynak: docs/troubleshooting/REACT_NATIVE_ANDROID_UPLOAD_TROUBLESHOOTING.md

Semptom

Android cihazlarda fotoğraf yükleme "Network request failed" hatası veriyor. %100 başarısızlık oranı Android’de. iOS’ta aynı kod çalışıyor.

WARN Request failed, retrying (attempt 1/2) - Network request failed
ERROR Max retries exceeded [ConnectionError: Network request failed]

Root Cause

Android’de React Native fetch API ile FormData kullanımı NSURLSession’dan farklı çalışır. Android network stack, binary dosya upload için FormData objesini iOS gibi serialize etmez.

  • iOS: NSURLSession → mature FormData, consistent binary serialization
  • Android: Farklı network stack, FormData binary dosya sorunları

Çözüm

expo-file-system/legacy.uploadAsync(MULTIPART) kullanıldı:

await FileSystem.uploadAsync(
  `${baseUrl}/customer/media`,
  fileUri,
  {
    fieldName: 'media',
    httpMethod: 'POST',
    uploadType: FileSystem.FileSystemUploadType.MULTIPART,
    headers: { ...headersWithoutContentType }  // Content-Type kaldır
  }
)

İlgili Commit

Android-spesifik upload fallback. Detaylar services/MediaService.ts içinde uploadMediaAndroidFileSystem ve uploadMediaAndroidXHR.