在特定文件夹中创建文件夹GOOGLE DRIVE API V3

时间:2018-04-09 16:54:49

标签: android google-drive-android-api

我正在尝试以编程方式获取google驱动器中的文件夹名称,并在文件夹中创建一个文件夹,但没有办法。

我已阅读此文档:

Google Drive API EXAMPLE

但是如何获取特定文件夹并在其中创建另一个文件夹?。程序设计,不是助理。

确定。我需要更新位图到谷歌驱动器。我尝试使用此代码,但无法正常工作

        String IdFolder = (String) objects[0];
            Bitmap bitmapUpload = (Bitmap) objects[1];

            File fileMetadata = new File();
            fileMetadata.setTitle("photo.jpg");
            fileMetadata.setParents(Collections.singletonList(new ParentReference().setId(IdFolder)));

            File file = mService.files().insert(fileMetadata, bitmapUpload)
                    .setFields("id, parents")
                    .execute();
            System.out.println("File ID: " + file.getId());

我试过这个:

            String IdFolder = (String) objects[0];
            Bitmap bitmapUpload = (Bitmap) objects[1];

            int byteSize = bitmapUpload.getRowBytes() * bitmapUpload.getHeight();
            ByteBuffer byteBuffer = ByteBuffer.allocate(byteSize);
            bitmap.copyPixelsToBuffer(byteBuffer);


            byte[] byteArray = byteBuffer.array();


            ByteArrayInputStream bs = new ByteArrayInputStream(byteArray);

            File fileMetadata = new File();
            fileMetadata.setTitle("photo.jpg");
            fileMetadata.setParents(Collections.singletonList(new ParentReference().setId(IdFolder)));

            File file = mService.files().insert(fileMetadata, bs)
                    .setFields("id, parents")
                    .execute();
            System.out.println("File ID: " + file.getId());

但不起作用。刚说:

com.google.api.client.http.abstract inputstreamcontent

?¿?

2 个答案:

答案 0 :(得分:3)

我试图制作一个python函数,您可以按照自己的方式使用它。

def create_folder_in_folder(folder_name,parent_folder_id):
    
    file_metadata = {
    'name' : folder_name,
    'parents' : [folder_id],
    'mimeType' : 'application/vnd.google-apps.folder'
    }

    file = drive_service.files().create(body=file_metadata,
                                    fields='id').execute()
    
    print ('Folder ID: %s' % file.get('id'))

编辑建议 @Jeremy Caney

因此,此函数将要保留的特定文件夹的父ID作为要在其中创建另一个文件夹的父文件夹。另一个是子文件夹名称。

现在,在这里

file_metadata = {
    'name' : folder_name,
    'parents' : [folder_id],
    'mimeType' : 'application/vnd.google-apps.folder'
    }

此父ID作为parent参数,在MIME类型中,您要告诉Google服务器在父ID parents中创建文件夹类型的文件,其中name参数描述名称的文件夹。您可以查看Google here提供的MIME类型,以供将来的代码参考

现在

file = drive_service.files().create(body=file_metadata,
                                    fields='id').execute()

此行仅将请求发送到服务器以执行操作,其中文件对象包含JSON格式的响应。

Here是我使用终端本身做所有必要选项的工具,通常在google drive的网站上进行操作,您可以阅读此作为参考。

希望这会有所帮助。

答案 1 :(得分:1)

要做的第一件事是确保您的凭据有效。要向驱动器API发出请求,请按照quickstart of the documentation中指定的说明进行操作(假设您将使用android)。然后你可以work with folders基于文档。另请注意,创建文件夹时也可以使用this.newUser.photo_preview属性来创建子文件夹。希望这会有所帮助。