2016-01-23 6 views
5

में Alamofire MultiPartForm फ़ाइलें मैं अपने प्रश्न का उत्तर कहीं भी नहीं ढूंढ पा रहा हूं इसलिए मैंने सोचा कि मैंने पूछा है।NSTemporaryDirectory

मैं चित्रों की बड़ी मात्रा अपलोड करने के लिए Alamofire 3.1.5 का उपयोग कर रहा हूं, हम सैकड़ों एमबी में बात कर रहे हैं।

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 
             . 
             . 
             . 

मैं समझता हूँ के रूप में Alamofire उन्हें, डिस्क के लिए बचत बेहतर रैम optimalization के लिए द्वारा उन अनुरोध बनाने संभालता है:

वहाँ एक कोड का टुकड़ा है। जो स्मार्ट है और मैं इसके बारे में वास्तव में खुश हूं। यह सिर्फ दोषपूर्ण काम करता है।

दूसरी ओर इसका मतलब है कि यह मूल रूप से डिस्क पर डेटा पेलोड को दोगुना कर रहा है।

enter image description here

चीजें हैं जो उन फ़ाइलों को एक नष्ट नहीं किया जा रहा है, यह भी चेतावनी देता है कि डिवाइस मुक्त स्थान कम हो गया है आईओएस डिफ़ॉल्ट स्क्रीन कारण बनता है।

मुझे पता है कि इस निर्देशिका की सामग्री को कैसे हटाया जाए, लेकिन मेरे वर्तमान कोड प्रवाह में सभी अनुरोध समाप्त होने के बाद सामग्री को हटाना सुरक्षित है, यह 100 अनुरोध भी हो सकता है, और उनमें से प्रत्येक को लगभग 20 एमबी लगता है पेलोड। तो बात यह है कि डिवाइस में इस डेटा की मात्रा को संग्रहीत करने की क्षमता भी नहीं हो सकती है।

मेरा प्रश्न है:

मैं Alamofire इन फ़ाइलों में से हर एक को हटाने के लिए कर सकते हैं के बाद इसे सफलतापूर्वक अपलोड हो जाता है?

बल्कि लंबे प्रश्न के लिए खेद है, मैं आपको यहां एक आलू पोस्ट करूंगा, लेकिन यह 9गग नहीं है।

उत्तर

2

इस this issue के अनुसार, आपको इसे स्वयं हटाने की आवश्यकता होगी।

यह आसान है, सर्वर से प्रतिक्रिया प्राप्त करने के बाद उत्पन्न सभी फ़ाइलों को हटा दें। यहां बताया गया है कि मैंने यह कैसे किया:

// 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 {} 

     } 
     } 
    } 
) 
संबंधित मुद्दे