人。我试图想办法通过CollectionFS(cfs:s3)动态设置上传到Amazon S3的文件的名称。
以下代码是一个起点,我只是不知道从哪里开始:
var modStore = new FS.Store.S3("modFiles", {
accessKeyId: "--key--",
secretAccessKey: "--key--",
bucket: "meteor-intrepid",
folder: "mods",
beforeWrite: function(fileObj) {
return {
name: "RenameTest"
}
}
});
我无法弄清楚我是如何将表单数据导入beforeWrite
的。以下代码是用于在此集合中存储文件的表单:
{{#autoForm collection="ModUploads" id="uploadFileForm" type="insert"}}
<fieldset>
<section class="centered">
{{> afQuickField name="file" label=false}}
</section>
{{#if noMods}}
No Mods!
{{ else }}
<section class="form-group">
<label for="mod">Mod:</label>
<select class="form-control" data-schema-key="mod" id="mod" name="mod">
{{#each mods}}
<option value="{{ _id }}">{{ name }}</option>
{{/each}}
</select>
</section>
{{/if}}
{{> afQuickField name="version" }}
<button type="submit" class="btn btn-default btn-block">Upload File</button>
</fieldset>
{{/autoForm}}
我想要做的是拉出所选&#39;模式的文字。选项,以及获取&#34;版本的价值&#34;字段,并使用它们来构建存储对象的文件名,但我不知道如何将信息传递到需要去的地方。任何帮助都会非常感激,我知道可能有某种方式可以做我想做的事情,我只是...无法解决我的生活
答案 0 :(得分:0)
我们假设您的模板名为“uploadTemplate”,您只需设置对提交事件的回复,抽出 mod 和的值版本使用我的Meteor提供的jquery位,将它们放在一个fileName变量中,然后在 modStore 中使用它。
Template.uploadTemplate.events({
'submit #uploadFileForm': function(e){
e.preventDefault();
var fileName = $('#mod').val() + '-' + $('#version').val();
var modStore = new FS.Store.S3("modFiles", {
accessKeyId: "--key--",
secretAccessKey: "--key--",
bucket: "meteor-intrepid",
folder: "mods",
beforeWrite: function(fileObj) {
return {
name: fileName
}
}
});
//do whatever with modStore
//Router.go('/somewhere/togo/afterwards');
}
});