2017-09-07 12 views
0

Google은 웹 애플리케이션과 Google 드라이브 간의 연결 메커니즘을 개발 중입니다. Google Picker를 사용자에게 표시하고 사용자가 파일을 선택하고 $ .post를 통해 Picker 콜백의 데이터에 선택한 파일을 연결합니다. 모든 것이 잘 작동하며 Picker 콜백에서 선택된 파일의 id, name, mimeType, url 및 sizeBytes를 가져올 수 있습니다.Google Picker Api sizeBytes가 정의되지 않았습니다.

또한 사용자가 Picker에서 파일을 업로드하고 한 가지를 제외하고는 파일을 업로드하기를 원합니다. 사용자가 파일을 업로드하면 picker 콜백에서 data.docs 객체를 성공적으로 가져 오지만 이번에는 "sizeBytes"필드가 정의되지 않았습니다.

무언가를 놓치거나 잘못 되었습니까? Picker API에 업로드 한 후 "sizeBytes"필드가 정의되지 않은 이유는 무엇입니까?

우리는 구글 선택기를 만드는 방법이있다,

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"파일을 업로드하면 정의되지 않습니다.

+0

"sizeByte"메타 데이터는 어떻게 가져 오나요? 처음에 반입 된 응답이 있었습니까? – noogui

+0

@noogui 제 질문을 편집했습니다 – cck

답변

1

피커가 업로드시 fields=*을 지정하지 않은 것 같습니다. 이는 업로드 응답이 최소한의 파일 속성 일 뿐이라는 것을 의미합니다. files.get(id)&fields=*을해야합니다.

Google 문서 (문서, 스프레드 시트 등)는 크기가 없습니다.

1

이런 일이 있습니다. data.doc[0] 개체의 "sizeBytes"(실제로는 fileSize) 속성에 액세스하고 있지만 해당 속성은 없습니다. 당신은()이 객체를 CONSOLE.LOG 경우, 여기가 액세스 할 수있는 속성은 다음과 같습니다

{id: "dfdsafdsafdsafdsafM", serviceId: "docs", mimeType: "image/png", name: "IMAGE.png", description: "", …} 
description 
downloadUrl 
driveError 
driveSuccess 
iconUrl 
id 
isNew 
lastEditedUtc 
mimeType 
name 
serviceId 
type 
uploadId 
uploadState 
url 

이 목록에 sizeBytes (fileSize)가 없다, 따라서 당신이 undefined을 얻고있다. fileSize 속성에 액세스하려면 Handling Google Drive Items에서 설명한대로 files.get을 사용해야합니다. 그리고 그 일은 내 친구, 내가 너에게 남길 것이다. 디버깅 부분을 이미 마쳤습니다.

+0

고마워요. noogui 사실은 이미 업로드 한 후에 files.get을 시도했지만 크기가 다시 null입니다. Picker에서 파일을 업로드 한 다음 닫은 다음 다시 열고 업로드 된 파일을 선택하면 sizeBytes를 얻을 수 있습니다. 그러나 업로드 프로세스가 끝난 직후 나는 운이 없었습니다. 그런데 Google 드라이브에 이미 존재하는 파일에 대해 files.get을 사용하면 크기가 좋아질 수 있습니다. @pinoyyid가 지적한 바가 맞다. 문제의 원인은 Picker Api에서 파일을 업로드하는 것입니다. – cck