我正在使用Drive Api使用户上传文件并将其存储在其Google Drive帐户中。正如我现在所看到的,用户上传的每个文件都隐藏在我的应用程序下,没有我的应用程序就无法显示在驱动器上。我希望他们像Google云端硬盘上的常规图片,视频等一样显示他们上传的文件。
是否有实现此功能的方法?
编辑:
我想为这个问题添加解决方案,以帮助访问此页面的程序员。
让我们创建我们要在其中存储文件的文件夹:
var client = GoogleHttpClient(await account.authHeaders);
var drive = ga.DriveApi(client);
ga.File fileMetadata = ga.File();
fileMetadata.name = "ourFolderName";
fileMetadata.mimeType = "application/vnd.google-apps.folder";
var response = await drive.files.create(fileMetadata);
print("response file id: ${response.id}");
writeFolderID(response.id);
writeFolderID方法包含一些将ID写入本地db以在应用程序中进一步使用的代码。
[当我尝试上传内容时,我必须将FolderID添加到File变量中的file.parents字段中。然后在驱动器中创建文件。
var client = GoogleHttpClient(await googleSignInAccount.authHeaders);
var drive = ga.DriveApi(client);
ga.File fileToUpload = ga.File();
var file = await FilePicker.getFile();
String folderID = await getFolderID("folderKey"); //getFolderID is a function that retrieves folderID we have created before.
// In order to upload a file to a folder in drive api, we have to save the folderID at creation moment.
fileToUpload.parents = [folderID];
fileToUpload.name = path.basename(file.absolute.path);
var response = await drive.files.create(
fileToUpload,
uploadMedia: ga.Media(file.openRead(), file.lengthSync()),
);
之后,您可以轻松地在Google云端硬盘中显示“ ourFolderName”,并可以进行互动。
我自己找到了解决方案。当我指定父文件夹和元数据时,应该将父文件夹留空,如变量说明中所述。
我希望它能帮助访问此页面的任何人。