2016-10-10 21 views
2

Firebase Storageから画像f5bd8360.jpegをダウンロードしようとしています。
dataWithMaxSize:completionを使ってこの画像をメモリにダウンロードすると、ダウンロードできます。
Firebase Storageローカルファイルへのダウンロードエラー

writeToFile:インスタンスメソッドを使用してイメージをローカルファイルにダウンロードしようとすると、問題が発生します。私は次のエラーを取得してい

:ここ

Optional(Error Domain=FIRStorageErrorDomain Code=-13000 "An unknown 
error occurred, please check the server response." 
UserInfo={object=images/f5bd8360.jpeg, 
bucket=fir-test-3d9a6.appspot.com, NSLocalizedDescription=An unknown 
error occurred, please check the server response., 
ResponseErrorDomain=NSCocoaErrorDomain, NSFilePath=/Documents/images, 
NSUnderlyingError=0x1700562c0 {Error Domain=NSPOSIXErrorDomain Code=1 
"Operation not permitted"}, ResponseErrorCode=513}" 

は私スウィフトコードの抜粋です:

@IBAction func buttonClicked(_ sender: UIButton) { 

     // Get a reference to the storage service, using the default Firebase App 
     let storage = FIRStorage.storage() 

     // Get reference to the image on Firebase Storage 
     let imageRef = storage.reference(forURL: "gs://fir-test-3d9a6.appspot.com/images/f5bd8360.jpeg") 

     // Create local filesystem URL 
     let localURL: URL! = URL(string: "file:///Documents/images/f5bd8360.jpeg") 

     // Download to the local filesystem 
     let downloadTask = imageRef.write(toFile: localURL) { (URL, error) -> Void in 
      if (error != nil) { 
       print("Uh-oh, an error occurred!") 
       print(error) 
      } else { 
       print("Local file URL is returned") 
      } 
     } 
    } 

私が取得しています同じエラーでanother questionが見つかりましたが、それはに答えていませんでしたフル。私はその提案が正しいと思う。ファイルに書き込む権限がありません。しかし、どのように権限を得るのか分かりません。何か案は?

let downloadTask = imageRef.write(toFile: localURL) { (URL, error) -> Void in 
etc. 

あなたはまだその(localURL)の場所への書き込み権限を持っていない:

+1

他の回答と同様に、あなたは 'file:/// Documents/images/f5bd8360.jpeg'に書き込む権限を持っていない可能性があります。 '/ Documents'に書き込む許可を持っている可能性がありますが、'/Documents/images'は存在せず、自動的に作成されない可能性があるので、ファイルを書き込めないので失敗します。あなたが書き込むためのすべての正しいディレクトリを持っていることを確認してください。 –

+2

[Firebase Storageからダウンロードしていない画像](http://stackoverflow.com/questions/37539785/images-not-downloading-from-firebase-storage) –

+0

iOSでディレクトリを作成するにはどうしたらいいですか?特にimagesディレクトリ。 –

答えて

6

問題は、現時点ではこの行を記述する場合ということです。 にあなたが本当でテストしている場合は、あなたのデバイス上で次のパス(にファイルを書き込みます、それを行うことでlocalURL

let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! 
let localURL = documentsURL.appendingPathComponent("filename") 

に何かを書こうとする前に、次のコードを記述する必要が許可を得ますデバイス): ファイル:///var/mobile/Containers/Data/Application/XXXXXXXetc.etc./Documents/filename

シミュレータでテストする場合、パスは明らかにコンピュータのどこかにあります。

関連する問題