从这个例子。我可以使用 MediafileUpload 创建文件夹吗?我怎样才能得到parent_id?
来自https://developers.google.com/drive/folder
我只知道我应该使用 mime = "application/vnd.google-apps.folder" 但是如何实现本教程以使用 Python 进行编程?
谢谢你的建议。
从这个例子。我可以使用 MediafileUpload 创建文件夹吗?我怎样才能得到parent_id?
来自https://developers.google.com/drive/folder
我只知道我应该使用 mime = "application/vnd.google-apps.folder" 但是如何实现本教程以使用 Python 进行编程?
谢谢你的建议。
要在云端硬盘上创建文件夹,请尝试:
def createRemoteFolder(self, folderName, parentID = None):
# Create a folder on Drive, returns the newely created folders ID
body = {
'title': folderName,
'mimeType': "application/vnd.google-apps.folder"
}
if parentID:
body['parents'] = [{'id': parentID}]
root_folder = drive_service.files().insert(body = body).execute()
return root_folder['id']
如果您想在另一个文件夹中创建文件夹,您只需要一个父 ID,否则不要为此传递任何值。
如果您需要父 ID,则需要编写一个方法来在该位置搜索具有该父名称的文件夹(执行 list() 调用),然后获取该文件夹的 ID。
编辑:请注意,API 的 v3 使用“父母”字段的列表,而不是字典。此外,'title'
字段更改为'name'
,insert()
方法更改为create()
。对于 v3,上面的代码将更改为以下代码:
def createRemoteFolder(self, folderName, parentID = None):
# Create a folder on Drive, returns the newely created folders ID
body = {
'name': folderName,
'mimeType': "application/vnd.google-apps.folder"
}
if parentID:
body['parents'] = [parentID]
root_folder = drive_service.files().create(body = body).execute()
return root_folder['id']
仅当您要插入内容时才需要媒体文件上传。由于您只想插入元数据(文件夹只是元数据),因此您不需要它。带有代表 foder 的 JSON 的常规 POST 就足够了。
您可以通过多种方式获取父 ID:
https://drive.google.com/#folders/0B8VrsrGIcVbrRDVxMXFWVkdfejQ
0B8VrsrGIcVbrRDVxMXFWVkdfejQ
如何以编程方式获取 FileID:
root
您 Drive 的根文件夹。使用 3. 和 1.,您可以获得 Drive 的所有 fileId。
我不知道我怎样才能更清楚
def create_folder(header, folder_name, folder_id, drive_id=None):
url = 'https://www.googleapis.com/upload/drive/v3/files'
file_metadata = {
'name': folder_name,
'mimeType': 'application/vnd.google-apps.folder',
'parents': [folder_id]
}
file_withmetadata = {"data": ("metadata", json.dumps(file_metadata), "application/json; charset=UTF-8")}
param = {"q":"'%s' in parents" %folder_id, "supportsAllDrives":"true"}
if drive_id is not None:
param['driveId'] = drive_id
r = requests.post(
url,
headers=header,
params=param,
files=file_withmetadata
)
return json.loads(r.text)