Cのアプリケーションでのファイル共有の構成#

最近、私は、顧客がアプリケーションから直接アクセスして、それぞれインターネット経由でファイル共有を実装することを要求する興味深いプロジェクトに取り組みました。



基本的な要件:



最初に思いついたのは、APIアクセスでクラウドベースのデータウェアハウスを使用することでした。 それで、これは何から来たのですか?



最初の問題



次のようなサービスのAPIドキュメントを調べることにしました。



最初はすべてのストレージに満足していました。 それぞれに、ファイルのダウンロード、直接ダウンロード、削除、リスト、およびスニペット、さらにはNET用のAPIインタラクションライブラリのメソッドがありました。 プラットフォーム。 必要なのはそれだけのようです! しかし、私にとっていくつかの重大な瞬間がありました。たとえば、DropBoxはAPIリクエストの数に制限を設定しました-1日あたり5000。 (私の状況では)最も重要なストレージの問題は、クライアントアプリケーションを認証する方法でのDropBox、Box、Windows Live SkyDriveです。 このタイプの認証では、データを直接転送してアカウントを入力することはできません。 Ge.ttの候補は1人だけでした。



みんなのためのファイル



Ge.ttは、ユーザーに2GBの無料ストレージを提供します。 クラウドと対話するには、アプリケーションを作成してAPIKeyを取得する必要があります。 ドキュメントはかなり少ないですが、必要な機能はすべてあります。 利用規約は、お客様の要件を完全に満たしています。 承認モデルは単純です:パラメーターEmail + Password + APITokenを持つPOST要求。 これにボーナス、必要な機能の実装を備えた既製の動的ライブラリ、私たちはそれで動作します。



実装



ストレージ構造は次のように定義されます。





つまり、各ボールにはファイルのリストを含めることができるため、たとえばファイル拡張子に対応する主題セクションを作成できます。

主なアルゴリズムについて説明します。

  1. 認可
  2. バルーンをアップグレードします。
  3. ボール内のファイルのリストを取得します。
  4. ファイルをダウンロードします。




ログイン


ライブラリをプロジェクトに接続します。

using Gett;
      
      





  //  Gett.Sharing.GettUser user = new Gett.Sharing.GettUser(20);//   .   2 user.Login("qbxpm1maish5tgwjivqnl0a88jv2t9tim", "example@mail.com", "dj47vn3oc7");
      
      





セキュリティのために、ユーザー名とパスワードをクリーンな形式で保存することはお勧めしません。暗号化を使用してください。



ファイルを受け取ります


すでに書いたように、ファイルのリストを取得するには、特定のボールを選択する必要があります。 listBoxShareにボールのリストを描画し、アイテムをクリックするとlistBoxFilesにファイルのリストを読み込みます。

 user.RefreshMe();//POST  this.listBox_Share.Items.Clear(); this.listBox_Files.Items.Clear(); this.listBox_Share.Items.AddRange(user.Shares.GetShares()); //    listBox // Gett.Sharing.GettShare[] _shares = user.Shares.GetShares(); //    ,  
      
      





ファイル情報の取得も同様のプロセスです。 listBox_ShareのSelectedIndexChangedイベントで、次のコードを記述します。

 private void listBoxShare_SelectedIndexChanged(object sender, EventArgs e) { this.listBox_Files.Items.Clear(); if (this.listBox_Share.SelectedItem is Gett.Sharing.GettShare)//    { Gett.Sharing.GettShare share = (Gett.Sharing.GettShare)this.listBox_Share.SelectedItem;//    this.listBox_Files.Items.AddRange(share.Files);//       listBox_Files List<Gett.Sharing.GettFile> FileList = new List<Gett.Sharing.GettFile>();//        } }
      
      





以下を含むファイルのリストを取得することに注意してください。





必要なプロパティを取得するには、必要な要素にアクセスし、Infoプロパティを呼び出す必要があります。



 string name= FileList[0].Info.FileName;//      long size = FileList[0].Info.Size;// 
      
      







ファイルをダウンロードします。 たとえば、同じSelectedIndexChangedに対してコードを記述します。



 if (this.listBox_Files.SelectedItem is Gett.Sharing.GettFile)//    { Gett.Sharing.GettFile file = (Gett.Sharing.GettFile)this.listBox_Files.SelectedItem;//   SaveFileDialog saveDialog = new SaveFileDialog();// saveDialog    saveDialog.OverwritePrompt = true; saveDialog.FileName = file.Info.FileName; if (saveDialog.ShowDialog() == DialogResult.OK) { file.DownloadFileAsync(saveDialog.FileName);//   }
      
      







それから、あなたの想像力です:削除、ファイル名の変更、ディレクトリの作成。 APIは、あらゆるアイデアを実装する大きな機会を開きます。 良いアイデアが成功の鍵です!



All Articles