Swift TUS File Upload Kullanımı




 Bir önceki yazımızda TUS File upload işleminden ve nasıl kullanıldığından bahsetmiştik.Bir önceki yazımızı okumak için  buraya tıklayabilirsiniz.

TUS File Upload işleminde IOS kütüphanesinde bir hata mevcut ve bu hata tam olarak çözümlenmedi. Uzun uğraşlar sonrası ben hatayı çözdüm ama daha belirtmedim.Hatayı açıklayacak olursam ilk dosya yükleme işleminden sonra ikinci yükleme işlemini yapmıyor. Bunun sebebini kütüphane içerisinde kaybolsamda buldum. TUS File Upload IOS Yükleme işlemini statü olarak devam ettirmektedir.

İlk yükleme işleminde statü durumunu ready çekmediği için ikinci dosya yükleme işlemini başlatamıyordu. TUS File Upload IOS işlemi hakkında daha fazla bilgi edinmek için tıklayınız.

İlk olarak yapmamız gereken işlem pod olarak Tus File Upload kütüphanesi eklemektir.


   
  pod 'TUSKit','~> 2.0.7.alpha'
 

Bu işlemin ardından ViewController sınıfına  TUSDelegate implement etmemiz gerekmektedir.

MainView.swift 

    var tusClient = TUSClient.shared
     override func viewDidLoad() {
        TUSClient.shared.delegate = self
  }

  func uploadImage(){
  
  //Bu kısımda liste olarak tuttuğumuz imageleri döngü olarak sırası ile sunucumuza yüklüyoruz.
  //3 farklı biçimde dosyalarınızı sunucuya iletebilirsiniz.
  
         for i in selectedImages {
                    if let img = i.IMG?.jpegData(compressionQuality: 0.5){
                        let uploadObject = TUSUpload(withId:i.FILENAME ?? "" , andData:img , andFileType: "image/jpeg")
                        tusClient.createOrResume(forUpload: uploadObject)
                    }
                }
  
  }
  
   func TUSProgress(bytesUploaded uploaded: Int, bytesRemaining remaining: Int) {
        hud.textLabel.text = "Dosya yükleniyor.\n\(uploaded)/\(remaining)"
        hud.indicatorView = JGProgressHUDIndeterminateIndicatorView()
        hud.show(in: self.view, animated: true)
    }
    
    func TUSProgress(forUpload upload: TUSUpload, bytesUploaded uploaded: Int, bytesRemaining remaining: Int) {
        
    }
    
    func TUSSuccess(forUpload upload: TUSUpload) {
        hud.textLabel.text = "Dosya yüklendi."
        hud.indicatorView = JGProgressHUDIndeterminateIndicatorView()
        hud.show(in: self.view, animated: true)
        numOfUploaded+=1
        var fullName : String  = upload.uploadLocationURL?.absoluteString ?? ""
        if(!fullName.isEmpty){
            let fullNameArr : [String] = fullName.components(separatedBy: "/")
            print(fullNameArr[4])
            reqBody.append(fullNameArr[4] ?? "")
        }
        if(recordedAudio.count + selectedImages.count == numOfUploaded){
            uploadServices(reqBody: reqBody)
            reqBody = [String]()
        }
        tusClient.cancel(forUpload: upload) //Cancel a specific upload
        tusClient.cancelAll() //Cancel all uploads
        tusClient.cleanUp(forUpload: upload)
        tusClient.status = .ready
    }
     func uploadServices(reqBody : [String]){
  //Bu fonksiyon ile sunucudan gelen dosya isimlerini servise ileteceğiz ve servis sunucuya iletilen dosya ile bizim ilettiğimiz dosya isimlerini eşleyecek kayıt altına alacaktır.
  }


AppDelegate


         func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 
        var config = TUSConfig(withUploadURLString: Strings.shared.uploadUrl, andSessionConfig: URLSessionConfiguration.default)
        config.logLevel = .All // Set logging on
        TUSClient.setup(with: config)
        return true
    }

TUS File upload işlemi bu şekilde daha fazla bu tarz yazılar gelmesini istiyorsanız yorum yazabilir ve istediğiniz konuları belirtebilirsiniz. Aklınıza takılan soruları yorum kısmında sorabilirsiniz. Yeni sitemiz 
www.el-harezmi.com göz atabilirsiniz.İyi kodlamalar.


Yorum Gönder

0 Yorumlar