上传字符串作为文本文件到SkyDrive?(Uploading string as text fil

2019-09-28 14:06发布

我想用C#与实时连接API上传空白(或一个写着“测试”)的文本文件到SkyDrive。 我到目前为止的代码:

LiveConnectClient client = await LiveSignin();
string folderID = await getFolder(client);
client.BackgroundUploadAsync(folderID, "pins.txt", "", OverwriteOption.Rename);

其中LiveSignin()是处理符号的代码,并返回一个LiveConnectClient和的GetFolder(LiveConnectClient客户端)是获取我想要上传到该文件夹​​ID功能的功能。

该代码抛出关于空字符串(最后一行第三个参数)的错误不必是一个“Windows.Storage.Streams.IInputStream”,但我似乎无法找到如何将字符串转换成IInputStream任何文件或者,对于这个问题,很多的“IInputStream”的任何文件,我可以找到的。

与早期版本的Windows运行时的/活动连接(在其他项目中)我用了:

byte[] byteArray = System.Text.Encoding.Unicode.GetBytes(Doc);
MemoryStream stream = new MemoryStream(byteArray);
App.client.UploadCompleted += client_UploadCompleted;
App.client.UploadAsync(roamingSettings.Values["folderID"].ToString(), docTitle.Text + ".txt", stream);

但抛出了很多错误,现在(他们大多因为UploadAsync已被替换BackgroundUploadAsync)。

那么,有没有办法将字符串转换为IInputStream,还是我也不需要使用IInputStream? 如果我的方法是行不通的,如何将一个从C#Metro应用上传一个空白的文本文件到SkyDrive? (在Visual Studio 2012次快车在Windows 8企业的评价发展,是否是有很大差异。)

编辑:我终于找到了“Stream.AsInputStream”,但现在我得到了同样的错误作为本

类型的未处理的异常“System.AccessViolationException”发生在Windows.Foundation.winmd

其他信息:试图读取或写入保护内存。 这通常是指示其他内存已损坏

现在的代码:

LiveConnectClient client = await LiveSignin();
string folderID = await getFolder(client);
Stream OrigStream = new System.IO.MemoryStream(System.Text.UTF8Encoding.UTF8.GetBytes("test"));
LiveOperationResult result = await client.BackgroundUploadAsync(folderID, "pins.txt", OrigStream.AsInputStream(), OverwriteOption.Rename);

Answer 1:

你好

有同样的问题,今天,据我可以看到这个问题的唯一解决办法是先写你的文本到本地文件,然后上传。

我的解决办法是这样的:

var tmpFile= await ApplicationData.Current.
                       LocalFolder.CreateFileAsync
                         ("tmp.txt", CreationCollisionOption.ReplaceExisting);

using (var writer = new StreamWriter(await tmpFile.OpenStreamForWriteAsync()))
{
    await writer.WriteAsync("File content");
}
var operationResult = 
      await client.BackgroundUploadAsync(folderId, tmpFile.Name, tmpFile,
                                          OverwriteOption.Overwrite);


文章来源: Uploading string as text file to SkyDrive?
标签: c# onedrive