Мы разрабатываем механизм связи между нашим веб-приложением и Google Диском. Мы показываем Google Picker нашим пользователям, и пользователь выбирает файл, и мы связываем выбранный файл с нашими данными в обратном вызове Picker через $ .post. Все работает хорошо, и мы можем получить id, name, mimeType, url и sizeBytes выбранного файла в обратном вызове Picker.
Мы также хотим, чтобы наши пользователи загружали файлы из Picker, и он тоже работает, за исключением одного. Пользователь загружает файл, мы успешно получаем объект data.docs в обратном вызове Picker, но на этот раз поле sizeBytes не определено.
Мы что-то упускаем или делаем что-то не так? Почему поле sizeBytes не определено после загрузки в Picker api?
Вот как мы создаем Google Picker,
var view = new google.picker.View(google.picker.ViewId.DOCS);
var picker = new google.picker.PickerBuilder()
.enableFeature(google.picker.Feature.MULTISELECT_ENABLED)
.setAppId(appId)
.setOAuthToken(oauthToken)
.addView(view)
.addView(new google.picker.DocsUploadView())
.setLocale(pickerApiLocale)
.setMaxItems(5)
.setCallback(pickerCallback)
.build();
picker.setVisible(true);
Редактировать:
Вот как мы получаем данные обратного вызова;
function pickerCallback(data) {
if (data.action == google.picker.Action.PICKED) {
for (var i = 0; i < data.docs.length; i++) {
var selectedDoc = data.docs[i];
var params = {
fileId: selectedDoc.id,
fileName: selectedDoc.name,
mimeType: selectedDoc.mimeType,
webViewLink: selectedDoc.url,
size: selectedDoc.sizeBytes,
};
$.post('myurl',params,function(){
some code here....
});
}
}
}
Если пользователь загружает файл, sizeBytes не определено.