【问题标题】: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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-28
      • 2018-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      相关资源
      最近更新 更多