UWP - 图片库 - 访问被拒绝

时间:2016-05-16 11:08:57

标签: c# windows-phone win-universal-app

我有以下代码:

FileSavePicker savePicker = new FileSavePicker();
savePicker.FileTypeChoices.Add("Plain Text", new List<string>() { ".txt" });
savePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
savePicker.SuggestedFileName = "New Document";
savePicker.SuggestedSaveFile = photo;
await savePicker.PickSaveFileAsync();

我的appxmanifest看起来像:

<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp">
  <Identity Name="" Publisher="" Version="1.0.0.0" />
  <mp:PhoneIdentity PhoneProductId="" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
  <Properties>
    <DisplayName></DisplayName>
    <PublisherDisplayName></PublisherDisplayName>
    <Logo>Assets\StoreLogo.png</Logo>
  </Properties>
  <Dependencies>
    <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
  </Dependencies>
  <Resources>
    <Resource Language="x-generate" />
  </Resources>
  <Applications>
    <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="zalegaNaMagazynie.App">
      <uap:VisualElements DisplayName="" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="" BackgroundColor="transparent">
        <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png">
        </uap:DefaultTile>
        <uap:SplashScreen Image="Assets\SplashScreen.png" />
      </uap:VisualElements>
    </Application>
  </Applications>
  <Capabilities>
    <Capability Name="internetClient" />
    <uap:Capability Name="picturesLibrary" />
    <uap:Capability Name="removableStorage" />
    <DeviceCapability Name="webcam" />
  </Capabilities>
</Package>

但是我在调​​试时总是遇到“访问被拒绝”错误。 拍照后我正在使用这个C#代码,因为我需要将它转换为Base64,我得到了一些教程,我必须首先保存图像,然后使用流等,或者你有更好的解决方案将图像转换为Base64编码。我需要Base64使用HttpClient通过POST方法将图片发送到Web API。

1 个答案:

答案 0 :(得分:0)

您可以将文件保存在本地文件夹中。你不需要清单中的任何功能。

StorageFile sf =  await ApplicationData.Current.LocalFolder.CreateFileAsync("filename.txt");

顺便说一句,如果你想发送小文件,可以使用HttpClient。不推荐用于大数据