【问题标题】:How do I get the Path from the Windows 8 Photos App as a Share Target?如何从 Windows 8 照片应用程序中获取路径作为共享目标?
【发布时间】:2012-11-11 19:48:26
【问题描述】:

当我尝试从 Windows 8 照片应用程序共享时从共享目标的 GetStorageItemsAsync() 调用传回给我的 IStorageItems 的路径时,返回的所有项目的路径属性为空。名称(文件名)已正确填充。但是,我需要实际的路径,而且似乎没有办法获得它。

这是 Windows 8 的照片应用程序中的错误,还是我做错了什么?

我获取项目列表的代码:

this.sharedStorageItems = await this.shareOperation.Data.GetStorageItemsAsync();

我的代码遍历列表:

// Display the name of the files being shared.
var files = new List<String>();
for (int index = 0; index < this.sharedStorageItems.Count; index++)
    files.Add(String.Concat(this.sharedStorageItems[index].Path, "\\", this.sharedStorageItems[index].Name));

上面的路径总是空的。

【问题讨论】:

    标签: c# windows windows-8 windows-store-apps


    【解决方案1】:

    您确定需要该路径吗?不能保证您可以自己访问文件。例如,如果您没有照片库访问权限,则无法访问那里的物理图像。如果您没有互联网访问权限,您将无法访问来自 Facebook 和 Flickr 的内容。有些也可能来自 SkyDrive,而您可能根本无法直接访问这些。

    某些应用可能会即时生成图像,只需使用结果创建一个 StorageItem。

    StorageItem 旨在将您从中抽象出来。你得到的是实际共享的文件,而不是其他一些间接的。

    【讨论】:

    • 如果照片来自网络摄像头,则根本没有文件名。
    • 是的,我需要路径。我需要上传共享的文件。如果我没有路径,则无法访问该文件。 :)
    • 我遗漏了一些细节: -- 我确实需要文件上传路径。 -- 我已经订阅了 file 事件,并且不会响应 Bitmap 请求或其他。
    • 我认为您遗漏了一些基本要点。当您将自己设置为存储项目的共享目标时,它并不一定意味着来自驱动器的物理文件。这些文件可以来自任何地方,并且通常来自您无法通过应用程序以编程方式访问的位置。如果要上传,则需要使用 StorageItem 方法来获取文件位。这是 HTML/JS 版本。 C#/XAML 版本类似。 msdn.microsoft.com/en-us/library/windows/apps/hh758300.aspx
    • 我还没有测试过,但是谢谢,我找到了 C# 版本:msdn.microsoft.com/en-us/library/windows/apps/xaml/…
    【解决方案2】:

    您可能还想通过您的 Windows 帐户检查您的共享设置。可以更轻松地解决您的问题。

    【讨论】:

      【解决方案3】:

      IStorageItem 似乎只是基类。真正返回的是一个 IStorageFile,其中包括作为共享过程的一部分创建的临时文件的基本流。

      因此,将 IStorageItem 转换为 IStorageFile,您将可以很好地处理返回的文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-28
        • 1970-01-01
        • 1970-01-01
        • 2015-05-17
        • 2020-08-26
        • 1970-01-01
        • 2016-04-10
        • 1970-01-01
        相关资源
        最近更新 更多