WebClientでインターネットからファイルをダウンロードしてOffice365(Sharepoint)のDocument File(ドキュメントファイル)に保存する。(C# Silverlight + Office365 Document Library)

WebClientでインターネットからファイルをダウンロードしてOffice365(Sharepoint)のDocument File(ドキュメントファイル)に保存する。(C# Silverlight + Office365  Document Library)

[csharp title=”FileDownload_Office365Save”]
private Byte[] m_dt = new Byte[] { };
private void FileDownload_Office365Save()
{
var client = new WebClient();
client.OpenReadCompleted += OpenReadCompleted;
client.OpenReadAsync(new Uri("http://xxxxxxxx/test.pdf", UriKind.Absolute));
}

void OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
//InvokeしないとMessageBox動かない。
Dispatcher.BeginInvoke(() =>
{
try
{
// エラーチェック
if (e.Error != null)
{
MessageBox.Show(e.Error.Message + "\r\n" + e.Error.StackTrace);
return;
}

System.IO.Stream sr = null;
System.IO.BinaryReader br = null;

try
{
//取得したバイナリデータを Byte[]に読み込み
sr = (System.IO.Stream)e.Result;
br = new System.IO.BinaryReader(sr);
m_dt = new Byte[sr.Length];
br.Read(m_dt, 0, m_dt.Length);

//読み込んだバイナリデータをOffice365(Sharepoint document)にアップロード
string siteURL = ClientContext.Current.Url;
string strListName = "YYYYYY"; //ドキュメントリストの名前
string strDocumentName = "test.pdf"; //ドキュメントファイルに保存する名前
UploadDocument(siteURL, strListName, strDocumentName, m_dt);

}
finally
{
if (br != null)
{
br.Close();
}

if (sr != null)
{
sr.Close();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
}
});
}

protected void UploadDocument(string siteURL, string strListName, string strDocumentName, byte[] documentStream)
{

using (ClientContext clientContext = new ClientContext(siteURL))
{
List list = clientContext.Web.Lists.GetByTitle(strListName);
FileCreationInformation fileCreationInformation = new FileCreationInformation();

fileCreationInformation.Content = documentStream;
fileCreationInformation.Overwrite = true;
fileCreationInformation.Url = strDocumentName;

SP.File uploadFile = list.RootFolder.Files.Add(fileCreationInformation);
//uploadFile.ListItemAllFields["DocType"] = "Favourites";
uploadFile.ListItemAllFields.Update();
clientContext.ExecuteQueryAsync(
new ClientRequestSucceededEventHandler(delegate(object o, ClientRequestSucceededEventArgs successargs)
{
this.Dispatcher.BeginInvoke(new Action(delegate()
{
try
{
MessageBox.Show("登録しました。");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
}

}), null);
}),
new ClientRequestFailedEventHandler(delegate(object o, ClientRequestFailedEventArgs failedArgs)
{
this.Dispatcher.BeginInvoke(new Action(delegate()
{
try
{
MessageBox.Show(failedArgs.ErrorDetails + " " + failedArgs.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
}

}), null);
})
);

}
}

[/csharp]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA