无法使用 node.js 从 Electron 应用程序使用 xhr 从文件系统上传 1GB 的文件(不使用输入类型文件的硬编码文件)

Not able to upload file of 1GB from filesystem, (hardcoded file not using input type file) using xhr from Electron application using node.js

我需要使用 xhr 上传从文件系统(用户未指定)读取的文件。有没有办法通过 Ajax 发送?

我知道 javascript 有输入类型文件,它给出 javascript 文件对象 https://developer.mozilla.org/en-US/docs/Web/API/File。 我尝试使用 Node fs API (https://nodejs.org/docs/latest/api/fs.html) 获取文件描述符。但是我无法通过 xhr 发送它。这是我的代码片段。

任何帮助将不胜感激。

var req = new XMLHttpRequest();
req.open(method, url);    
req.overrideMimeType('text/xml');

 var progress = 0;
  req.upload.addEventListener('progress', function (event) {
      if (event.lengthComputable) {
          progress = Math.round(event.loaded * 100 / event.total);
      }
   }, false);

   req.onreadystatechange = function () {
      // add logic for each state
   };

   var fs = require('fs');
   if (filename) {
       // get the file descriptor and send it via xhr
       fs.open(filename, "r", function(error, fd) {
       // -- THIS IS THE PART NOT WORKING --
       req.send(fd);
     });
   } else {
         console.log('no filename');
   }

这不是读取文件的方式。这就是你的做法:

var fs = require('fs');
fs.readFile(filename, { encoding : 'utf8' }, function(err, data){
    //data holds the contents of the file.
    req.send(data);
});