Xamarin将图像上传到文件夹并使文件夹共享

时间:2017-12-03 11:09:21

标签: c# xamarin.android google-drive-android-api

我想将图片上传到特定文件夹,如果该文件夹不存在,请创建该图片并将此文件夹共享为另一个电子邮件地址。 我使用以下代码:

                MetadataChangeSet changeSetfile = new MetadataChangeSet.Builder()

                   .SetTitle("Test.jpg")
                   .SetMimeType("image/jpeg")
                   .Build();


            MetadataChangeSet changeSetfolder = new MetadataChangeSet.Builder()
                                               .SetTitle("New folder")
                                               .SetMimeType(DriveFolder.MimeType)
                                               .SetStarred(true)
                                               .Build();

            DriveClass.DriveApi
             .GetRootFolder(_googleApiClient)
             .CreateFolder(_googleApiClient, changeSetfile) ;

            DriveClass.DriveApi
                     .GetRootFolder(_googleApiClient)
                      .CreateFile(_googleApiClient, changeSetfolder, contentResults.DriveContents);

1 个答案:

答案 0 :(得分:0)

首先,您必须检查文件夹是否存在。根据本教程 - Search files on Google Drive with C#,您可以使用:

  
      
  • 按文件名

         
        
    • 如果您知道文件的名称或名称的一部分,您可以搜索名称。全文也很好,它允许您搜索“文件的全文,包括名称,描述,内容和可索引文本。”
    •   
  •   
  • 仅列出文件目录

         
        
    • 也可以只搜索一种类型的文件,说您只想退回帐户中的所有Google表格?如果您只是想找到所有文件夹,那么该文件夹是“application / vnd.google-apps.folder”的mimetype,这样我们就可以搜索到它。
    •   
  •   

检查它是否存在后,将ID放在parents参数中:

var folderId = "0BwwA4oUTeiV1TGRPeTVjaWRDY1E";
var fileMetadata = new File()
{
    Name = "photo.jpg",
    Parents = new List<string>
    {
        folderId
    }
};
FilesResource.CreateMediaUpload request;
using (var stream = new System.IO.FileStream("files/photo.jpg",
    System.IO.FileMode.Open))
{
    request = driveService.Files.Create(
        fileMetadata, stream, "image/jpeg");
    request.Fields = "id";
    request.Upload();
}
var file = request.ResponseBody;
Console.WriteLine("File ID: " + file.Id);

希望这有帮助。