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

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

        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);
                    })
                );

            }
        }

コメントを残す

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