2014-10-21 2 views
1

У меня есть приложение с простыми билетами. Когда я создаю новый билет, я могу добавить прикрепленный файл, связанный с этим. Кнопка загрузки не работает. Метаданные файлов были правильно вставлены в коллекцию, и я вижу это. Возможно, именно по этой причине: ресурсов нет в папке загрузки. Я использую CFS: разъем файловой системы и здесь мой код:Meteor CollectionFs - кнопка загрузки не работает

ticket.html

<head> 
    <title>orangeticket-test</title> 
</head> 

<body> 
    <h1>Tickets</h1> 
    {{> newTickets}} 
    {{> tickets}} 
</body> 

<template name="newTickets"> 
    <input type="text" id="ticket" placeholder="name" > 
    <input id="submit" type="submit"> 
</template> 

<template name="tickets"> 
    {{#each tickets}} 
     <div class="tickets"> 
      <p>Titolo: {{name}}</p> 
     {{> addFile}} 
     </div> 
    {{/each}} 
</template> 

<template name="addFile"> 
    <form> 
     <input id="file" type="file"> 
     <input id="addFile" type="submit"> 
    </form> 
    {{#each files}} 
     <div class="file"> 
      <strong>{{this.name}}</strong> <a href="{{this.url download=true}}" class="btn btn-primary">Download</a> 
     </div> 
    {{/each}} 
</template> 

tickets.js

Tickets = new Meteor.Collection('Tickets'); 

var fileStore = new FS.Store.FileSystem("fileStore", { 
    path: "~/uploads/files" 
}); 
Files = new FS.Collection("Files", { 
    stores: [fileStore] 
}); 

if (Meteor.isClient) { 

    Template.tickets.helpers({ 
    tickets: function() { 
     return Tickets.find(); 
    } 
    }); 

    Template.newTickets.events({ 
    'click #submit': function (e, t) { 
     e.preventDefault(); 
     var ticket = t.find('#ticket').value; 
     Tickets.insert({name:ticket}); 
    } 

    }); 

    Template.addFile.events({ 
    'click #addFile' : function(e, t){ 
     var file = t.find('#file').files[0]; 
     var ticket = this._id; 
     var newFile = new FS.File(file); 
     newFile.metadata = { 
     ticketId: ticket 
     }; 
     Files.insert(newFile, function (err, fileObj) { 
     if (!err) { 
      console.log(fileObj); 
     } 
     }); 
    } 
    }); 

    Template.addFile.helpers({ 
    files: function() { 
     var ticket = this._id; 
     return Files.find({'metadata.ticketId':ticket}); 
    } 
    }) 
} 

if (Meteor.isServer) { 
    Meteor.startup(function() { 
    console.log('server works'); 
    }); 
} 

клон мерзавец проекта:

мерзавец @ gitlab.com:arcidiaco.a/orangeticket-test.git

спасибо большое!

+0

У меня такая же проблема сейчас! – Chromos

+0

Я пробовал много раз, и случайно только одно приложение было загружено правильно. Я также пробовал cfs: ui, но у меня такая же проблема. – Arcy

ответ

0

Я решил проблему: кнопка отправки обновила страницу во время загрузки файла. Это действие прерывает действие загрузки. Я удалил кнопку отправки и использовал вместо этого только входной файл с событием изменения:

Template.addFile.events({ 
    'canche #file' : function(e, t){ 
     var file = t.find('#file').files[0]; 
     var ticket = this._id; 
     var newFile = new FS.File(file); 
     newFile.metadata = { 
     ticketId: ticket 
     }; 
     Files.insert(newFile, function (err, fileObj) { 
     if (!err) { 
      console.log(fileObj); 
     } 
     }); 
    } 
    }); 
Смежные вопросы