2009-07-07 13 views
4

NSURLConnection sendSynchronousRequestメソッドを使用してイメージをダウンロードしていて、正常に動作しています。しかし、画像URLが画像ファイル以外を指している問題が発生することがあります。たとえば、この非画像URLが問題を引き起こしていたことがわかりました。http://www.100plusposters.com/images/ExoticFlowers.jpg URLはWebページを返します。これは、画像がサイトに存在しないために発生すると想定しています。iPhoneでWebからダウンロードした画像ファイルを検証するにはどうすればよいですか?

Objective-Cに関する素晴らしい点の1つは、無効な画像がクラッシュを引き起こさないことです。それは単に静かに続き、ちょうどイメージを表示しませんが、それはまだ問題です。

返されたデータを確認してから、表示する前に有効な画像ファイルであることを確認するにはどうすればよいですか?

ありがとうございます! NSURLResponseオブジェクトがMIMEType propertyが含まれているように役立ちます場合に

私の関連するコード、...

NSError *error = nil; 
NSURLResponse *response; 
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:5]; 

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

if(data != nil && [error localizedDescription] == nil) 
{ 
    //Create UIImage object using initWithData method 
    //Display UIImage 
} 

答えて

8

が見えます。返されたデータの型がどのようなものか、かなり良い考えがあります。

+0

これは完全に機能します。ありがとうございました! –

4

私たちはこの質問を一歩前進させることができますか?イメージデータが不完全であるか、サーバーから壊れている場合はどうなりますか?完全なトランスポートが動作し、MIMEタイプがimage/jpeg、UIImageが構築され、非nilですがレンダラーがデータの不一致を検出し、ログに「Bad Huffmanコード」または「データセグメントの早すぎる終了」が表示される可能性があります

どのようにUIImageをビューコンテキストに投げ込み、それによってスクリーン上に美しくないイメージを表示する前にこのエラーをキャプチャするのですか?

0

Http Requestのヘッダーから取得したコンテンツの長さをクロスチェックすることで、最後に受信したデータが、ダウンロードしたデータが完全であるかどうかを判断できます。

破損について私は多くの情報を持っていません。

関連する問題