繁体   English   中英

使用PapaParse和collectionFS在流星中生成可下载的csv文件

[英]Generating a downloadable csv file in meteor with PapaParse and collectionFS

因此,我整天都在努力和研究,但无法使其正常工作。 我正在开发我的第一个流星程序,该程序从几个csv文件中获取输入,运行一些数学运算,然后返回两个新的csv文件。 我认为我首先要构建csv文件的解析和返回,因为这似乎是最困难的部分。 我设法将文件放回去,但是我一生无法将它们取回。 我确定这与我生成文件的方式有关,但无法弄清楚。

我意识到还有很多代码无法使用,但是现在我要做的就是通过vimeo字段传递一个csv文件,将其解析为数组,然后将其重新下载为csv以进行制作确保解析/解析/下载正常。 我终于设法生成了一个可下载的文件,但这是一个空的html文件。 任何帮助世界都将不胜感激。

这是我当前的代码:

HTML

<head>
<title>Josh's App</title>
</head>

<body>
<div class="container">
{{>csvTemplate}}
{{>downloadLinkTemplate}}
</div>

</body>


<template name="csvTemplate">
<form id="csv-upload">

    <p><span class="label">Instructors File</span><br><input    name="csvInstructors" type="file"></p>
    <p><span class="label">Video List</span><br><input name="csvVideos" type="file"></p>
    <p><span class="label">Vimeo Report</span><br><input name="csvVimeo" type="file"></p>
    <input type="submit" value="Submit">

</form>
</template>

<template name="downloadLinkTemplate">
test

<a title="downloadTest"  href="#" download="{{downloadUrl}}">Test Link</a>
 </template>

JS1

if (Meteor.isClient) {

var fileTest;

Template.csvTemplate.events({
   'submit form': function() {
   event.preventDefault();
       var csvInstructors;
       var csvVideos;
       var csvVimeo;

       Papa.parse(event.target.csvInstructors.files[0], {
           header: true,
           dynamicTyping: true,
           complete: function(results) {
              csvInstructors = results;
               csvPass()
           }
       });
       Papa.parse(event.target.csvVideos.files[0], {
           header: true,
           dynamicTyping: true,
           complete: function(results) {
               csvVideos = results;
               csvPass()
           }
       });
       Papa.parse(event.target.csvVimeo.files[0], {
           header: true,
           dynamicTyping: true,
           complete: function(results) {

               csvVimeo = results;
               fileTest = statReportGenerate(csvVimeo);
               csvPass()
           }
       });



       var csvPass = function(){ _.after(3, function() {
           maths(csvInstructors, csvVideos, csvVimeo)
       });
     }
   }})

Template.downloadLinkTemplate.helpers({
    downloadUrl: function() {
        console.log("below function", fileTest);
       return statReports.find({_id: fileTest}).url()
    }


})
}



if (Meteor.isServer) {
// This code only runs on the server

}

JS2

statReports = new FS.Collection("statReports", {
stores: [new FS.Store.GridFS("statReports", {path: "/reports/statReports"})]
});

paymentReports = new FS.Collection("paymentReports", {
stores: [new FS.Store.GridFS("paymentReports", {path: "/reports/paymentReports"})]
});

if (Meteor.isClient) {

statReportGenerate = function (statData) {
    console.log("wtf", statData.data);
    var omg = Papa.unparse(statData.data,{
            header: true
        });

    var blob = new Blob([omg], {type: "text/csv;charset=utf-8"});
    console.log("blob", blob);
    return statReports.insert(blob)._id;
    };
}

正确的答案似乎是对链接使用以下代码:

<a title="downloadTest" href="{{downloadUrl}}" download="test.csv">Test Link</a>

感谢@paul为我指出正确的方向。

另一个要注意的是,在此工作之后,每当我下载文件时,我的服务器便开始崩溃。 我必须跑步:

meteor add cfs:http-methods@=0.0.27 --allow-incompatible-update

按照https://github.com/CollectionFS/Meteor-http-methods/issues/39修复问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM