动态命名CollectionFS文件(AWS S3)

时间:2015-06-05 03:42:08

标签: amazon-web-services meteor amazon-s3

人。我试图想办法通过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;字段,并使用它们来构建存储对象的文件名,但我不知道如何将信息传递到需要去的地方。任何帮助都会非常感激,我知道可能有某种方式可以做我想做的事情,我只是...无法解决我的生活

1 个答案:

答案 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');


    }
});