2014-11-10 10 views
3

각 특정 API에 대한 코드를 작성하지 않고 다양한 클라우드 스토리지 시스템의 파일을 읽을 수있는 방법을 찾고 있습니다. 이것을 달성 할 수있는 방법이 있습니까? 우리가 필요로하는 것은 매우 간단합니다 :보관 용 계정, iCloud, SkyDrive 등에 액세스하는 단일 C# API?

  1. FileOpen 대화 상자의 폴더 내용을 얻는 방법.
  2. 선택한 파일을 읽는 방법입니다.
  3. 선택 사항 : 파일을 표시하고 하나를 선택하는 모든 작업을 수행하는 FileOpen 대화 상자.

감사 - 데이브

+0

"질문은 책, 도구, 소프트웨어 라이브러리, 자습서 또는 다른 오프 사이트 자원 오프있다 추천 또는 찾기 위해 우리를 묻는 :

는 간단한 예를 들자면 스택 오버플로 (Stack Overflow) 주제는 오피니언 스 응답과 스팸을 유치하는 경향이 있기 때문에 문제를 설명하고 지금까지 해결 된 문제를 설명하십시오. " – Luigi

+0

좋아, 구체적인 필요를 다시 작성. –

+0

당신이 필요로하는 것은 매우 간단하지 않다. 가상 파일 시스템을 요구하고있다. (모든 파일을 로컬에 먼저 다운로드하고 싶지 않다면, 나는 그렇지 않다). [원격 웹 서비스를위한 Windows 가상 디스크] (http://stackoverflow.com/questions/8151813/), [Dropbox 및 디자인과 같은 "Folder"] (http://stackoverflow.com/questions/13640599/), [윈도우 용 사용자 모드 파일 시스템 작성하기?] (http://stackoverflow.com/questions/1412763/). 일단 알아 낸 것이 있다면, 여러 웹 서비스를 사용하고 그 내용을 로컬 파일 시스템으로 보여주고 파일을 읽는 일은 쉽지 않습니다. – CodeCaster

답변

2

이 문제에 대한 해결책이있다. point.io에는 중개인이 편안한 API를 통해 & 엔터프라이즈 스토리지 제공 업체에 액세스 할 수있는 공개 API가 있습니다. 그것은 기본적으로 당신이 찾고있는 기능을 가지고 있습니다. 개발자는 api를 사용하여 다양한 저장소 공급자를 유형으로보고 앱에서 많은 어려움을 겪을 수 있습니다. 폴더를 얻을 수있는 방법 :

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

당신이 사용할 수있는 "API v1을 (코어 API를)"에 대한 :

그들은 여기에 github repo that has C# src code examples

파일 목록을 호출하는 간단한 C# 코드입니다 있습니다 FileOpen 대화 상자의 내용 선택한 파일을 읽는 방법입니다. 옵션 : 파일을 표시하고 선택하는 모든 작업을 수행하는 FileOpen 대화 상자입니다. 보관 용 계정에서 파일과 폴더의 목록을 가져옵니다

 //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"); 
     } 
    } 
+0

이것은 Dropbox에 대한 질문에 특별히 답하는 것 같지만 OP는 "각 특정 API에 대한 코드를 작성하지 않고 모든 다양한 클라우드 스토리지 시스템에 액세스" - 이것은 단일 클라우드 스토리지 시스템을위한 특정 구현 일뿐입니다. – mjohnsonengr

+0

그러면 각 특정 API에 대한 코드를 작성하지 않고 다양한 클라우드 스토리지 시스템에 액세스 할 수 있습니다 ..... –

+0

특정 API 사용 - FileOpen 대화 상자의 폴더 내용을 가져 오려면. - 선택한 파일을 읽는 방법입니다. - 파일을 표시하고 선택하는 모든 작업을 수행하는 FileOpen 대화 상자. –