将文件内容传递给函数而不是下载文件

时间:2017-12-11 00:22:19

标签: javascript node.js file download nightmare

我正在使用Nightmare来自动从Web服务下载用户特定的生成csv文件,如下所示(粗略的工作流程):

  1. .goto()网站
  2. .insert()凭据和.click()登录按钮
  3. .wait()用于加载所需的DOM元素
  4. 抓取着陆页以提取生成我感兴趣的文件的下载链接所需的特定于请求的标识符
  5. .goto()端点上调用export.php,并使用其他一些参数来下载csv文件。由于显示了Nightmare的电子窗口,因此我被要求提供存储文件的路径。
  6. 目前,整体工作流程如下:

    1. 使用Nightmare下载(并保存)文件
    2. 使用readFileSync()将文件读入字符串
    3. 使用data-forge-jspandasjsd3-dsv
    4. 分析数据

      通过将文件的内容直接传递给数据分析,我想摆脱在步骤1中保存文件并在步骤2中读取该本地文件。我不想在本地存储原始的csv文件。由于我不想在生产后期启用Nightmares Electron Window,我正在寻找一种方法将文件的内容直接传递给数据处理函数并摆脱那些不必要的步骤。

1 个答案:

答案 0 :(得分:0)

您可以使用window.URL对象方法来存储数据。以下检索二进制blob,但您可以使用content-types和response-types返回字符串。

        xmlhttp.open('GET', PHOTO_URL, true);
        xmlhttp.responseType = 'blob';

        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4) {
                if (xmlhttp.status == 200) {
                    var blob = xmlhttp.response;
                    photoImg.src = window.URL.createObjectURL(blob);
                    setTimeout(setOnCampusImage,0);     
                } else {
                    photoImg.src = 'unknown.png';
                }
            }
        }