0

我对 FileOpenPicker (ModernUI xaml/c#) 有问题,因为如果从网络上挑选一些图片,它会返回“StorageFile”而没有错误,但是当我尝试使用 OpenAsync 打开它时,系统会抛出 FileNotFoundException。特别是我注意到,如果从 facebook 获取旧照片,这种情况总是会发生。

使用SDK Sample app "XAML images sample"很容易重现该问题。只需启动应用程序并从“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 回答