【问题标题】:JavaScript read all text from txt file on Google drive or DropboxJavaScript 从 Google 驱动器或 Dropbox 上的 txt 文件中读取所有文本
【发布时间】:2016-07-18 22:44:13
【问题描述】:
我想使用 JavaScript 将 Google Drive 或 Dropbox 上的 txt 文件的全部内容读入字符串变量。我见过类似的问题,但我想纯粹用 JavaScript 来完成。我已经尝试了一些方法,但我不断收到“XMLHttpRequest cannot load ... no 'access-control-allow-origin'”和“Failed to execute 'send'”错误。我也想在没有任何外部 API 或安装的情况下执行此操作。
【问题讨论】:
标签:
javascript
google-drive-api
xmlhttprequest
text-files
dropbox
【解决方案1】:
这是一个从Google Drive下载文本文件的javascript函数。
使用获取 API。
function get_doc(id){
const url = 'https://www.googleapis.com/drive/v3/files/'+id+'?alt=media'
if(self.fetch){
var setHeaders = new Headers();
setHeaders.append('Authorization', 'Bearer ' + authToken.access_token);
setHeaders.append('Content-Type', mime);
var setOptions = {
method: 'GET',
headers: setHeaders
};
fetch(url,setOptions)
.then(response => { if(response.ok){
var reader = response.body.getReader();
var decoder = new TextDecoder();
reader.read().then(function(result){
var data = {}
data = decoder.decode(result.value, {stream: !result.done});
console.log(data);
});
}
else{
console.log("Response wast not ok");
}
}) .catch(error => {
console.log("There is an error " + error.message);
});
}
}
如果是 Google Docs 文件,请参考 here。
【解决方案2】:
s007 答案工作得很好,但我不知道为什么它不返回文件中的所有文本(有些被修剪了)。下面我使用来自 google drive javascript api 的 files.get 函数。因此,这在您进行身份验证后有效。
this.readFile = function(fileId,callback){
var request = gapi.client.drive.files.get({
fileId: fileId,
alt: 'media'
})
request.then(function(response){
console.log(response); //response.body has the text content of the file
if (typeof callback === "function") callback(response.body);
},function(error){
console.error(error)
})
return request; //for batch request
}