3

特定の API ごとにコードを記述せずに、さまざまなクラウド ストレージ システムからファイルを読み取る方法を探しています。これを達成する方法はありますか?必要なものはとてもシンプルです:

  1. FileOpen ダイアログ ボックスのフォルダーの内容を取得する方法。
  2. 選択したファイルを読み取る方法。
  3. オプション: ファイルを表示して 1 つを選択するためのすべての作業を行う FileOpen ダイアログ。

ありがとう - デイブ

4

2 に答える 2

2

この問題には解決策があります。 point.ioには、Restful API を介してクラウドおよびエンタープライズ ストレージ プロバイダーへのアクセスを仲介するパブリック API があります。それは基本的にあなたが探している機能を備えています。この API を使用すると、開発者はさまざまなストレージ プロバイダーをタイプとして表示し、アプリの面倒な作業をすべて行うことができます。

C# src コード例を含むgithub リポジトリがあります。

ファイル リストを呼び出す簡単な C# コードを次に示します。

public async Task<List<FolderContent>> list(String sessionKey, String shareid, String containerid, String path)
{
HttpClient tClient = new HttpClient();
tClient.DefaultRequestHeaders.Add("AUTHORIZATION", sessionKey);
var query = HttpUtility.ParseQueryString(string.Empty);
query["folderid"] = shareid;
query["containerid"] = containerid;
query["path"] = path;
string queryString = query.ToString();
var rTask = await tClient.GetAsync(PointIODemo.MvcApplication.APIUrl + "folders/list.json?" + queryString);
var rContent = rTask.Content.ReadAsStringAsync().Result;
var oResponse = JsonConvert.DeserializeObject<dynamic>(rContent);
if (oResponse["ERROR"] == "1")
{
HttpContext.Current.Response.Redirect("/Home/ErrorTemplate/?errorMessage=" + oResponse["MESSAGE"]);
}
var rawColList = JsonConvert.DeserializeObject<List<dynamic>>(JsonConvert.SerializeObject(oResponse["RESULT"]["COLUMNS"]));
var rawContentList = JsonConvert.DeserializeObject<List<dynamic>>(JsonConvert.SerializeObject(oResponse["RESULT"]["DATA"]));
var fContentList = new List<FolderContent>();
foreach (var item in rawContentList)
{
FolderContent tContent = new FolderContent();
tContent.fileid = item[MvcApplication.getColNum("FILEID", rawColList)];
tContent.filename = item[MvcApplication.getColNum("NAME", rawColList)];
tContent.containerid = item[MvcApplication.getColNum("CONTAINERID", rawColList)];
tContent.remotepath = item[MvcApplication.getColNum("PATH", rawColList)];
tContent.type = item[MvcApplication.getColNum("TYPE", rawColList)];
tContent.size = item[MvcApplication.getColNum("SIZE", rawColList)];
tContent.modified = item[MvcApplication.getColNum("MODIFIED", rawColList)];
fContentList.Add(tContent);
}
return fContentList;
}
于 2014-11-25T17:13:52.897 に答える
-1

「API v1 (コア API)」を次の目的で使用できます。 FileOpen ダイアログ ボックスのフォルダの内容を取得する方法。選択したファイルを読み取る方法。オプション: ファイルを表示して 1 つを選択するためのすべての作業を行う FileOpen ダイアログ。

簡単な例を見てみましょう: Dropbox アカウントからファイルとフォルダーのリストを取得します

      //get the files from dropbox account and add it to listbox

   private void GetFiles()
    {
        OAuthUtility.GetAsync
        (
        "https://api.dropboxapi.com/1/metadata/auto/",
            new HttpParameterCollection
            {
               { "path", this.CurrentPath },
               { "access_token", Properties.Settings.Default.AccessToken }
            },
            callback : GetFiles_Results
        );
    }


  private void GetFiles_Results(RequestResult result)
    {
        if(this.InvokeRequired)
        { 
        this.Invoke(new Action<RequestResult>(GetFiles_Results), result);
        return;
        }

        if (result.StatusCode == 200) //200 OK- Success Codes
        {
            listBox1.Items.Clear();

            listBox1.DisplayMember = "path";

            foreach (UniValue file in result["contents"])
            {
                listBox1.Items.Add(file);

            }

            if(this.CurrentPath != "/")
            {
                listBox1.Items.Insert(0,UniValue.ParseJson("{path: '..'}"));
            }
        }
        else
        {
            MessageBox.Show("Failed to add file to listbox");
        }
    }
于 2015-12-10T06:41:02.870 に答える