2016-05-19 7 views
2

Alamofireを使用してファイルをダウンロードする前に、特定のファイルが既にダウンロードされているかどうかを確認するにはどうすればよいですか?私はsuggestedDownloadDestinationを使用していますので、Alamofireは自動的にファイルの名前を選択し、選択したディレクトリに保存します(例:.CachesDirectory)。問題は、suggestedDownloadDestinationで指定された値が、のタイプであり、要求のresponseで呼び出すことによってのみNSURLを返しますが、この方法では、以前に要求を実行せずにファイルパスを知ることができませんでした。Alamofire + suggestedDownloadDestinationを使用してファイルをダウンロードする前にファイルが既に存在するかどうかを確認してください

これは、私は現在、Alamofireでファイルをダウンロードするために使用するコードです:私は

Alamofire.download(.GET, downloadLink, destination: destination).progress { 
        bytesRead, totalBytesRead, totalBytesExpectedToRead in 

        }.response { 
         request, response, data, error in 

         guard error == nil else { 
          return 
         } 

         // This will give me the file path but we're already in a Request! 
         print("\(destination(NSURL(string: "")!, response!))") 
       } 

何をしないのですか?あなたはまだこれを考え出したが、あなたのようなAlamofire.DownloadRequest上で拡張機能を作成することができた場合

+1

これにはどんな解決策がありましたか? – osrl

+0

@osrl残念ながら、Alamofireは、suggestedDownloadDestinationを使用するのと同じように、簡単にこれを行う機会を与えていません。ダウンロードディレクトリのカスタムパスを使用し、suggestedDownloadDestinationを削除しました。 – Aluminum

+0

'.head'メソッドを使用して、ファイルをダウンロードする前に存在するかどうかを確認してください。しかし、ダウンロード要求メソッドが '.head 'であっても、Alamofireはファイルを作成します。それはどちらもうまくいかなかった。 – osrl

答えて

2

わからない:

ファイルを上書きしたい場合は、オプションパラメータで指定することができます今
extension Alamofire.DownloadRequest { 
    open class func suggestedDownloadDestination(
     for directory: FileManager.SearchPathDirectory = .documentDirectory, 
     in domain: FileManager.SearchPathDomainMask = .userDomainMask, 
     with options: DownloadOptions) 
     -> DownloadFileDestination 
    { 
     return { temporaryURL, response in 
       let destination = DownloadRequest.suggestedDownloadDestination(for: directory, in: domain)(temporaryURL, response) 
      return (destination.destinationURL, options) 
     } 
    } 
} 

let destination = DownloadRequest.suggestedDownloadDestination(for: .cachesDirectory, 
                   in: .userDomainMask, 
                   with: [DownloadRequest.DownloadOptions.removePreviousFile]) 
関連する問題