2016-07-25 20 views
0

GoogleWebAuthorizationBroker.AuthorizeAsync APIを使用してブラウザウィンドウのクローズイベントを取得できないため、このリンク(http://www.daimto.com/google-api-and-oath2/)を使用して埋め込みブラウザを作成し、ユーザーを認証しました。私はGoogleドライブでファイルをアップロードするためにアクセストークンをさらに使用することができません。上記のリンクからGoogleドライブのファイルをアップロード/ダウンロードするために引き続き利用できる例がありますか?同じ著者から埋め込みブラウザを使用してGoogleドライブにファイルをアップロードするC#

よろしく、 Amrut

答えて

0

、Googleドライブに/ダウンロードファイルをアップロードする方法のドキュメントがあります。

ほとんどのGoogle APIと同様に、接続するために認証する必要があります。これを行うには、まずアプリケーションをGoogleデベロッパーコンソールに登録する必要があります。 APIでは、承諾画面フォームに商品名とメールアドレスを必ず追加することを忘れないで、Google Drive APIGoogle Drive SDKを必ず有効にしてください。

プロジェクトが少なくとも.net 4.0に設定されていることを確認してください。

download我々は、ファイルIDを取得する唯一の方法は、我々が以前に使用Files.List()コマンドからあるそのファイルresorceを知っておく必要がありますファイルにするために、次のNuGetパッケージ

PM> Install-Package Google.Apis.Drive.v2 

を追加します。

public static Boolean downloadFile(DriveService _service, File _fileResource, string _saveTo) 
     { 
      if (!String.IsNullOrEmpty(_fileResource.DownloadUrl)) 
      { 
       try 
       { 
        var x = _service.HttpClient.GetByteArrayAsync(_fileResource.DownloadUrl); 
        byte[] arrBytes = x.Result; 
        System.IO.File.WriteAllBytes(_saveTo, arrBytes); 
        return true;     
       } 
       catch (Exception e) 
       { 
        Console.WriteLine("An error occurred: " + e.Message); 
        return false; 
       } 
      } 
      else 
      { 
       // The file doesn't have any content stored on Drive. 
       return false; 
      } 
     } 

_service.HttpClient.GetByteArrayAsyncを使用すると、ダウンロードしたいファイルのダウンロードURLを渡すことができます。ファイルがダウンロードされると、そのファイルをディスクに書き込むという単純な問題です。

ファイルをuploadにするためにディレクトリを作成することから、そのファイルにはmime-typeというものを教えてください。私はそれを理解しようとすると、ここに少しの方法があります。ファイル名を送信してください。注:ファイルの名前が既に存在するファイルと同じ名前である場合、Googleドライブにファイルをアップロードするとき。とにかくGoogleドライブだけでアップロードすると、そこにあったファイルは更新されず、同じ名前の2つのファイルになります。それは、ファイル名に基づいていないfileIdに基づいてのみチェックします。更新コマンドを使用する必要があるファイルを更新する場合は、後で確認します。

public static File uploadFile(DriveService _service, string _uploadFile, string _parent) { 

      if (System.IO.File.Exists(_uploadFile)) 
      { 
       File body = new File(); 
       body.Title = System.IO.Path.GetFileName(_uploadFile); 
       body.Description = "File uploaded by Diamto Drive Sample"; 
       body.MimeType = GetMimeType(_uploadFile); 
       body.Parents = new List() { new ParentReference() { Id = _parent } }; 

       // File's content. 
       byte[] byteArray = System.IO.File.ReadAllBytes(_uploadFile); 
       System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray); 
       try 
       { 
        FilesResource.InsertMediaUpload request = _service.Files.Insert(body, stream, GetMimeType(_uploadFile)); 
        request.Upload(); 
        return request.ResponseBody; 
       } 
       catch (Exception e) 
       { 
        Console.WriteLine("An error occurred: " + e.Message); 
        return null; 
       } 
      } 
      else { 
       Console.WriteLine("File does not exist: " + _uploadFile); 
       return null; 
      }   

     } 
+0

私はこのチュートリアルを終了しましたが、このチュートリアルでは、AuthorizeAsync APIを呼び出して作成したDriveServiceオブジェクトを使用してファイルをアップロード/ダウンロードします。しかし、私はアクセストークンしか持っていません(http://www.daimto.com/google-api-and-oath2/)。アクセストークンだけでアップロード/ダウンロードを続行するにはどうすればよいですか? – user2734779