2016-01-23 19 views
5

どこにでも私の質問に対する答えを見つけることができなかったので、私は尋ねたと思った。NSTemporaryDirectoryのAlamofire MultiPartFormファイル

かなり大量の画像をアップロードするのに私はAlamofire 3.1.5を使用しています。私たちは何百MBもの話をしています。私はAlamofireが良いRAMのoptimalizationのために、ディスクに保存することにより、これらの要求を作成取り扱う理解したよう

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

コードスニペットがあります。それは賢明で、私は本当にそれについて幸せです。それだけで完璧に動作します。

一方、それは基本的にはがディスク上のデータペイロードを2倍にすることを意味します。

enter image description here

物事それらのファイルAが削除取得されていないこと、それも、デバイスに空き領域が不足していることを警告するのiOSデフォルト画面を引き起こしています。

私はこのディレクトリの内容を削除する方法を知っていますが、私の現在のコードフローでは、すべての要求が終了した後もコンテンツを削除することができます。100リクエストでも、約20MBペイロード。そのため、デバイスではこの量のデータを格納する容量がないことさえあります。

私の質問は:

は、私はそれが正常にアップロード取得した後Alamofireは、これらのファイルのすべての単一の1を削除することはできますか?

申し訳ありませんが、かなり長い質問のために、私はポテトをここに掲載しますが、これは9gagではありません。

答えて

2

このthis issueによれば、あなた自身でそれを削除する必要があります。

Alamofireがサーバーからの応答を受け取った後に生成されたすべてのファイルを削除するだけで簡単です。ここで私はそれをやった:

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

     } 
     } 
    } 
) 
関連する問題