我正在開發一個Java-JSF Web應用程序,其中顯示一個彈出窗口,以便讓用戶從Google Drive中選擇一個文檔進行下載。從剛剛檢索到的id獲取Google Doc
爲了做到這一點,我有一些JS代碼:
<script src="filepicker.js"></script>
<script>
function initPicker() {
var picker = new FilePicker({
apiKey: 'MY_API_KEY',
clientId: my_client_id,
buttonEl: document.getElementById('pick'),
onSelect : function(file) {
if (file.id) {
sendLinkToBean(file.id);
} else {
alert('Unable to download file.');
}
}
});
}
</script>
<a4j:jsFunction name="sendLinkToBean" action="#{gPPersonFormBean.downloadFile()}">
<a4j:param name="param1" assignTo="#{gPPersonFormBean.fileId}"/>
</a4j:jsFunction>
的file.id到達豆,我設法得到它,如圖G.Drive的API:
public void downloadFile(){
try {
Drive driveService = getDriveService();
OutputStream outputStream = new ByteArrayOutputStream();
driveService.files().get(fileId) .executeMediaAndDownloadTo(outputStream);
} catch (IOException e) {
String mess = "downloadFile(): "
+ (e.getMessage()!=null?". "+e.getMessage():"")
+ (e.getCause()!=null?". "+e.getCause():"");
logger.error(mess);
}
}
但我得到FileNotFoundException:
com.google.api.client.http.HttpResponseException: 404 Not Found
{
"error": {"theID"
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "File not found: 1tvnGWDCse4TFQwIvqEDTlvv2cebfs0C2JBtjTP5A42I.",
"locationType": "parameter",
"location": "fileId"
}
],
"code": 404,
"message": "File not found: theID."
}
}
有誰知道爲什麼會發生這種情況? 在此先感謝。
編輯:我剛剛收到的ID與Google給出的ID與文件鏈接進行了比較,它們完全相同。
編輯2:如果我做driveService.files().list();
它返回一個空的列表。
謝謝您的回答,但它給了同樣的錯誤,404文件找不到 – Aldeguer
@Aldeguer對於給您帶來的不便,我深表歉意。剛纔我看到了你的EDIT2。我可以問你想下載的文件是否在你的Google Drive中? – Tanaike
是的,我從Google Picker和JS製作的驅動器文檔中選擇它。我已經嘗試了兩種,一種是由我創建的文件,另一種是由同伴創建的文件,但與我共享。沒有人工作 – Aldeguer