javascript - 在没有 node.js 的情况下从文件(文件系统)读取

标签 javascript node.js google-api google-apis-explorer

我正在尝试使用此功能将文件上传到 Google 云端硬盘,该功能取自他们的 Node.js 示例:

function uploadFiles() {
  var fileMetadata = {
    'name': 'test-1.jpg'
  };
  var media = {
    mimeType: 'image/jpeg',
    body: fs.createReadStream('img/test-1.jpg')
  };
  gapi.client.drive.files.create({
    resource: fileMetadata,
    media: media,
    fields: 'id'
  }, function(err, file) {
    if (err) {
      // Handle error
      console.error(err);
    } else {
      console.log('File Id: ', file.id);
    }
  });
}

我的问题是 fs.createReadStream() 行。

由于 Node.js 是一个服务器端工具,浏览器中不存在 require(),那么如何在不使用 Node.js 的情况下从 JavaScript 中的文件创建字节流?

编辑: - gapi.client.drive.files.create() 问题

 function readFile(evt) {
            var fData = [];
            var f = evt.target.files[0];
            if (f) {
                var r = new FileReader();
                r.readAsText(f);
                fData.unshift(f.name,f.type);
               var myInt = setInterval(function() {
                    if (r.readyState == 2) {
                        fData.push(r.result);
                         uploadFiles(fData);
                        clearInterval(myInt);
                    }
                }, 50);
            } else {
                alert("Failed to load file");
            }

        }

        function uploadFiles(dataArray) {
            var fileMetadata = {
                'name': dataArray[0]
            };
            var media = {
                mimeType: dataArray[1],
                body: dataArray[2]
            };
            gapi.client.drive.files.create({
                resource: fileMetadata,
                media: media,
                fields: 'id'
            }, function(err, file) {
                console.log("Reached!");
                if (err) {
                    console.error(err);
                } else {
                    console.log('File Id: ', file.id);
                }
            });
        }

        document.getElementById('upFile').addEventListener('change', readFile, false);

最佳答案

use filereader on client side to read file data. use this demo code and try.

<script type="text/javascript">
            function readSingleFile(evt) {
                var f = evt.target.files[0];
                if (f) {
                    var r = new FileReader();
                    r.onload = function(e) { 
                        var contents = e.target.result;
                    }
                    r.readAsText(f);
                } else {
                    alert("Failed to load file");
                }
            }
            document.getElementById('fileinput').addEventListener('change', readSingleFile, false);
        </script>

关于javascript - 在没有 node.js 的情况下从文件(文件系统)读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51816914/

相关文章:

javascript - 如果 <body> 有类,如何防止加载页面

javascript - 使用 Framer 运动变体在一个组件中应用多个动画

javascript - 使用 $in 查找中的 Mongoose 动态查询不起作用

c# - 使用 Json 文件的 Google 服务帐户身份验证

PHP Google Api 客户端 SQL 管理员未启用身份验证 IP

javascript - 如何从 Google 表格访问单元格值?

javascript - IE 9 刷新时不遵循 selectedIndex

javascript - Fullcalendar eventDrop回调函数从全天事件到限时事件失败

node.js - Knex : Timeout acquiring a connection

mysql - Node.js Promise 中的 mysql 错误处理