2016-01-23 16 views
5

Sorduğum soruya herhangi bir cevap bulamadım bu yüzden sordum. Ben resimlerin oldukça büyük hacimli yüklemek için Alamofire 3.1.5 kullanıyorumAlamofire MultiPartForm dosyaları NSTemporaryDirectory içinde

, biz MB yüzlerce bahsediyoruz. Ben Alamofire daha iyi RAM iyileştirmesi için, diske kaydederek bu isteği oluşturarak kolları anlamak gibi

self.manager.upload(.POST, url, headers: headers, multipartFormData: { multipartFormData in 
           multipartFormData.appendBodyPart(fileURL: generalURL, name: "general", fileName: "general", mimeType: "image/jpeg") 
           multipartFormData.appendBodyPart(fileURL: img1URL, name: "img1", fileName: "img1", mimeType: "image/jpeg") 
           multipartFormData.appendBodyPart(fileURL: img2URL, name: "img2", fileName: "img2", mimeType: "image/jpeg") 
           multipartFormData.appendBodyPart(fileURL: img3URL, name: "img3", fileName: "img3", mimeType: "image/jpeg") 
           }, encodingCompletion: { encodingResult in 
             . 
             . 
             . 

:

bir kod parçacığı vardır. Hangisi akıllı ve bu konuda gerçekten çok mutluyum. Sadece kusursuz çalışıyor. Bu disk üzerinde veri yükünü katlama temelde olduğu anlamına gelir Diğer yandan

.

enter image description here

şeyler Hatta cihazın boş alan azaldığında konusunda uyararak iOS varsayılan ekran neden olur, bu dosyalar silinmiş sakın olmasıdır.

bu dizinin içeriğini silmek için nasıl biliyorum ama benim geçerli kod akışında tüm istek bittikten sonra, hatta 100 istekleri olabilir ve bunların her biri kabaca 20 MB alır içeriğini silmek için güvenlidir yük. Öyleyse, cihaz bu miktarda veri depolama kapasitesine sahip olmayabilir.

Sorum şu: başarıyla yüklendiği sonra

Ben Alamofire bu dosyaların her birini silmek yapabilir miyim? oldukça uzun soru için üzgünüm

, burada seni bir patates sonrası olacaktır, ancak bu 9gag değildir.

cevap

2

bu this issue göre, bunu kendiniz silmeniz gerekecektir.

Bu basit, sadece sunucudan yanıt aldıktan sonra üretilen tüm dosyaları silin. İşte öyle yapmıştım:

// Just some upload 
Alamofire.upload(
    .POST, uploadURL, 
    multipartFormData: { multipartFormData in 
    multipartFormData.appendBodyPart(fileURL: somePath, name: "file") 
    }, 
    encodingCompletion: { encodingResult in 
    switch encodingResult { 
     case .Success(let upload, _, _): 
     upload.responseJSON { response in 
     if let JSON = response.result.value { 

      /*** delete temp files Alamofire generated ***/ 
      let temporaryDirectoryPath = NSTemporaryDirectory() 
      let dir = NSURL(fileURLWithPath: temporaryDirectoryPath, isDirectory: true) 
      .URLByAppendingPathComponent("com.alamofire.manager") 
      .URLByAppendingPathComponent("multipart.form.data") 
      do { 
      try NSFileManager.defaultManager().removeItemAtPath(dir.path!) 
      } catch {} 

     } 
     } 
    } 
)