2015-03-08 3 views
2

У меня есть файлы, хранящиеся на S3, и я хочу, чтобы автоматически загружать их для пользователя при нажатии на кнопкузагрузить Force от S3 по щелчку

Что я сделал до сих пор является, чтобы иметь маршрут

/Lib/маршруты/скачать

var fs = Npm.require('fs'); 

Router.route("download", function() { 
    console.log('retrieving ' + this.params.signedURL); 
    this.response.writeHead(200, {'Content-type': 'appplication/pdf'}, this.params.signedURL); 
    this.response.end(fs.readFileSync(this.params.signedURL)); 
}, { where: 'server', path: '/d/:signedURL'}); 

Но это не работает, потому что я не могу использовать fs на клиенте. И даже если бы я мог, я не уверен, что это сработает

Любые советы о том, как это сделать?

+0

Вместо добавления маршрута, вы можете передать подписанный URL клиенту с помощью вызова метода ? –

+0

Ну, я храню их в своей базе данных, если это то, что вы имеете в виду. – Tarlen

+0

Если у вас уже подписанный URL-адрес уже на клиенте, не можете ли вы использовать атрибут [download attribute] (http://davidwalsh.name/download-attribute) привязную метку для этого? Или вы пытаетесь поддерживать браузеры, не поддерживающие HTML5? –

ответ

1

Самый простой способ сделать это - использовать cfs:s3 package, который является дополнением к CollectionFS. Это не только поддерживает S3, но и прозрачно разбивает файлы на более мелкие куски во время загрузки и загрузки на/из S3.

1

Я извлечь signedUrl с помощью вызова метода метеор, то сделать это, когда пользователь нажимает на кнопку загрузки:

window.open(_signedURL,"_self"); 
Смежные вопросы