Skip to content
dr.dimitru edited this page Aug 4, 2016 · 36 revisions

Meteor-Files

This package is the GCAA Winner 2016. Big thanks to Benjamin Willems and Ryan Glover (The Chef) and all The Meteor Chef team!

About:

  • Event-driven API
  • Upload / Read files in Cordova app: Cordva support (Any with support of FileReader)
  • Upload via HTTP or DDP
  • File upload:
    • Ready for small and large files (RAM used only for chunk reading - read about chunkSize)
    • Pause / Resume upload
    • Auto-pause when connection to server is interrupted
    • Multi-stream async upload (faster than ever)
  • Use third-party storage:
  • Display upload speed
  • Display remaining upload time
  • Serving files:
    • Make files public, so your proxy server like nginx can serve them
    • Protect/Restrict access to files
    • Files CRC check (integrity check)
  • Write to file system (FS):
    • Automatically writes files on FS and special Collection
    • path, collection name, schema, chunk size and naming function is under your control
    • Support for file subversions, like thumbnails, audio/video file formats, revisions, and etc.
  • Streaming via HTTP:
    • Correct mime-type and Content-Range headers
    • Correct 206 and 416 responses
    • Following RFC 2616
  • Download via HTTP:
    • You able to specify route
    • Download is ready for small and large files, with support of progressive (chunked) download
  • Store wherever you like:
    • You may use Meteor-Files as temporary storage
    • After file is uploaded and stored on FS you able to mv or cp its content, see 3rd-party storage integration examples
  • Support of non-Latin (non-Roman) file names
  • Subscribe on files (collections) you need

ToC:

API:
  • FilesCollection Constructor [Isomorphic] - Initialize FilesCollection
  • FileCursor Class - Instance of this class is returned from .findOne() method
    • remove(callback) - {undefined} - Remove document
    • link() - {String} - Returns downloadable URL to File
    • get(property) - {Object|mix} - Returns current document as a plain Object
    • fetch() - {[Object]}- Returns current document as plain Object in Array
    • with() - {FileCursor} - Returns reactive version of current FileCursor
  • FilesCursor Class - Instance of this class is returned from .find() method
    • fetch() - {[Object]} - Returns all matching document(s) as an Array
    • count() - {Number} - Returns the number of documents that match a query
    • remove(callback) - {undefined} - Removes all documents that match a query
    • forEach(callback, context) - {undefined} - Call callback once for each matching document
    • each() - {[FileCursor]} - Returns an Array of FileCursor made for each document on current Cursor
    • observe(callbacks) - {Object} - Functions to call to deliver the result set as it changes
    • observeChanges(callbacks) - {Object} - Watch a query. Receive callbacks as the result set changes
    • See all methods
  • Default Collection Schema
  • write() [Server] - Write Buffer to FS and FilesCollection
  • load() [Server] - Write file to FS and FilesCollection from remote URL
  • addFile() [Server] - Add local file to FilesCollection from FS
  • findOne() [Isomorphic] - Find one file in FilesCollection
  • find() [Isomorphic] - Create cursor for FilesCollection
  • insert() [Client] - Upload file to server
  • remove() [Isomorphic] - Remove files from FilesCollection and unlink from FS
  • unlink() [Server] - Unlink file from FS
  • link() [Isomorphic] - Generate downloadable link
  • collection [Isomorphic] - Meteor.Collection instance
  • Template helper fileURL [Client] - Generate downloadable link in template
Examples:
Related Packages:
Articles:
Clone this wiki locally