gpt4 book ai didi

javascript - 使用PapaParse和collectionFS在meteor中生成可下载的csv文件

转载 作者:行者123 更新时间:2023-11-28 07:10:36 28 4
gpt4 key购买 nike

所以我一整天都在工作和研究这个问题,但无法使其发挥作用。我正在开发我的第一个 meteor 程序,该程序从几个 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 解决问题

关于javascript - 使用PapaParse和collectionFS在meteor中生成可下载的csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31351221/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com