0

FileOpenPicker (ModernUI xaml/c#) に問題があります。Web から選択した一部の写真の場合、エラーなしで「StorageFile」が返されますが、OpenAsync で開こうとすると、システムが FileNotFoundException をスローします。特に、Facebook から古い写真を拾う場合、これが常に発生することに気付きました。

SDKサンプルアプリ「XAML画像サンプル」を使えば簡単に再現できます。アプリを起動して「Facebook」から画像を取得し、最新の画像が問題なく開いていることに気付いたので、古い画像を取得してください。

より具体的には、実際にその例外をスローするコードの平和を見つけてください。

    // Open a stream for the selected file
    StorageFile file = await open.PickSingleFileAsync();

    // Ensure a file was selected
    if (file != null)
    {
        // Ensure the stream is disposed once the image is loaded
        // !!! Here exception is thrown if you pickup some old file from facebook !!!
        using (IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
        {
            // Set the image source to the selected bitmap
            BitmapImage bitmapImage = new BitmapImage();
            bitmapImage.DecodePixelHeight = decodePixelHeight;
            bitmapImage.DecodePixelWidth = decodePixelWidth;

            await bitmapImage.SetSourceAsync(fileStream);
            Scenario2Image.Source = bitmapImage;
        }
    }

提案と助けを前もってありがとう

敬具

MG

4

1 に答える 1

0

わかりましたので、ここに行きます:)

ファイルをダウンロードしてディスクのどこかに保存すると、ファイルを閉じると開くことができなくなります。これは、場所がアプリの機能に含まれていないためです。また、Windows ストア アプリはサンドボックス化されているため、機能にあるものだけを取得できることに注意してください。

この「問題」は 2 つの方法で管理できます。

1) アプリがアクセスできる場所のいずれかにファイルを保存します: -> ドキュメント ライブラリ -> 音楽ライブラリ -> ビデオ ライブラリ -> 画像ライブラリ -> ローカル アプリ ディレクトリ

ライブラリは、アプリが常にアクセスできるローカル アプリ ディレクトリへの機能で設定できます。これらのディレクトリから、ファイルを簡単に開くことができます

2)ファイルへのパスをアクセスキャッシュに保存します。このようにすることができます

StorageApplicationPermissions.FutureAccessList.AddOrReplace(fol.GetHashCode().ToString(), fol);

その後、あなたの能力から適切に配置されていなくても、ディレクトリにアクセスできますが、キャッシュには1000個のディレクトリを含めることができることに注意してください

于 2012-11-16T13:23:11.227 に答える