将 google 驱动器选择器文件转换为 javascript 文件类型
Convert google drive picker file to javascript file type
我正在使用 Google API V3。我有一个场景,我使用 google 驱动器选择器从驱动器中选择一个文件(任何扩展名)并将其发送到服务器进行操作(由于与项目相关的机密信息,无法提及很多细节).
编辑: 我正在尝试使用驱动器选择器从 google 驱动器中选择一个 mpp 文件(MS 项目)并将文件发送到服务器。服务器将 MPP 文件转换为 JSON 并将其返回给客户端 returns,这就是我正在尝试做的。我可以使用普通输入标签实现此目的,但要求是使用 google 驱动器选择器。
我可以通过选择器获取文件,使用 Google 文件 API (files.get) 获取文件详细信息,但我不知道如何进一步转换它进入 JavaScript 文件类型(类似于我们上传文件的输入标签)。
showDrivePicker({
title: 'Pick an mpp file',
selectFolderEnabled: true,
enableMyDrive: true
}, function pickerCallback( data ) {
if ( data[google.picker.Response.ACTION] == google.picker.Action.PICKED ) {
var doc = data[google.picker.Response.DOCUMENTS][0],
url = doc[google.picker.Document.URL].split('/view'),
name = doc.name;
gapi.client.files.get({
fileId: 'xxxxx',
corpora: 'teamDrive',
supportsTeamDrives: true,
includeTeamDriveItems: true,
includeTeamDriveItemsRequired: true,
includeItemsFromAllDrives: true,
fields: '*',
}).then((response) => {
// I have the downloadUrl here, but what should I do with it?
})
}
}, me);
请帮忙解决这个问题。
谢谢
在这种情况下你想做的是:
- 从驱动器下载文件
- 将其转换为文件对象
您可以通过提供ID并将alt
设置为media
来下载文件。要创建文件,您可以使用响应主体调用其构造函数,以及来自原始选择器文档信息的文件名和 MIME 类型:
function pickerCallback(data) {
if (data[google.picker.Response.ACTION] === google.picker.Action.PICKED) {
const doc = data[google.picker.Response.DOCUMENTS][0]
gapi.client.drive.files.get({
fileId: doc.id,
alt: 'media',
}).then(function(res) {
const file = new File([res.body], doc.name, { type: doc.mimeType })
// Do whatever with the file
console.log(file)
})
}
}
参考资料
我正在使用 Google API V3。我有一个场景,我使用 google 驱动器选择器从驱动器中选择一个文件(任何扩展名)并将其发送到服务器进行操作(由于与项目相关的机密信息,无法提及很多细节).
编辑: 我正在尝试使用驱动器选择器从 google 驱动器中选择一个 mpp 文件(MS 项目)并将文件发送到服务器。服务器将 MPP 文件转换为 JSON 并将其返回给客户端 returns,这就是我正在尝试做的。我可以使用普通输入标签实现此目的,但要求是使用 google 驱动器选择器。
我可以通过选择器获取文件,使用 Google 文件 API (files.get) 获取文件详细信息,但我不知道如何进一步转换它进入 JavaScript 文件类型(类似于我们上传文件的输入标签)。
showDrivePicker({
title: 'Pick an mpp file',
selectFolderEnabled: true,
enableMyDrive: true
}, function pickerCallback( data ) {
if ( data[google.picker.Response.ACTION] == google.picker.Action.PICKED ) {
var doc = data[google.picker.Response.DOCUMENTS][0],
url = doc[google.picker.Document.URL].split('/view'),
name = doc.name;
gapi.client.files.get({
fileId: 'xxxxx',
corpora: 'teamDrive',
supportsTeamDrives: true,
includeTeamDriveItems: true,
includeTeamDriveItemsRequired: true,
includeItemsFromAllDrives: true,
fields: '*',
}).then((response) => {
// I have the downloadUrl here, but what should I do with it?
})
}
}, me);
请帮忙解决这个问题。
谢谢
在这种情况下你想做的是:
- 从驱动器下载文件
- 将其转换为文件对象
您可以通过提供ID并将alt
设置为media
来下载文件。要创建文件,您可以使用响应主体调用其构造函数,以及来自原始选择器文档信息的文件名和 MIME 类型:
function pickerCallback(data) {
if (data[google.picker.Response.ACTION] === google.picker.Action.PICKED) {
const doc = data[google.picker.Response.DOCUMENTS][0]
gapi.client.drive.files.get({
fileId: doc.id,
alt: 'media',
}).then(function(res) {
const file = new File([res.body], doc.name, { type: doc.mimeType })
// Do whatever with the file
console.log(file)
})
}
}