2015-05-14 2 views
1

Одна страница, у меня есть вход для выбора файла. Когда пользователь выбирает файл, я хотел бы, чтобы пользователь был направлен на отдельный маршрут, содержащий интерактивный обрезщик изображения, который используется для подготовки изображения, прежде чем я загружу его на сервер. Поскольку я хотел бы иметь возможность использовать кнопку «Назад» для выхода из обрезной машины, имеет смысл сделать это только в отдельном маршруте. Для этого я использую железо-роутер.Передача файла по маршруту в Метеор

Template.myTemplate.events({ 
    'change input[type="file"]': function(e, t) { 
     Router.go('Crop'); 
    } 
}); 

Это успешно приводит меня к странице обрезки. На данный момент, хотя я не уверен, как получить ссылку на файл из myTemplate в Crop. Код ниже - это то, что я успешно использовал, чтобы нарисовать загруженное изображение в холст, когда они были в одном шаблоне.

var reader = new FileReader(); 
reader.onload = function(e) { 
    img = new Image(); 
    img.onload = function() { 
     //Draw image into canvas element 
    }; 
    img.src = e.target.result; 
}; 
reader.readAsDataURL(e.target.files[0]); 

Мне просто нужно найти способ передачи ссылки на файл при изменении маршрутов.

ответ

1

Вы не сможете получить ссылку на файл из myTemplate из шаблона Crop. Как только вы назовете шаблон Crop, мой шаблон выгружается и больше не доступен.

В событии изменения вы можете сохранить ссылку на файл в переменной в области приложения. И назовите это из шаблона Crop.

В верхней части файла шаблона :, или в ваш клиент/app.js

var myFile; 

В вашем случае изменения:

Template.myTemplate.events({ 
    'change input[type="file"]': function(e, t) { 
    myFile = e.currentTarget.files[0]; 
    Router.go('Crop'); 
    } 
}); 

в ваш маршрут Crop, просто использовать переменную Myfile везде, где вы хотеть!