{"id":15102939,"url":"https://github.com/veliovgroup/Meteor-Files","last_synced_at":"2025-09-27T01:30:33.454Z","repository":{"id":30507021,"uuid":"34061425","full_name":"veliovgroup/Meteor-Files","owner":"veliovgroup","description":"🚀 Upload files via DDP or HTTP to ☄️ Meteor server FS, AWS, GridFS, DropBox or Google Drive. Fast, secure and robust.","archived":false,"fork":false,"pushed_at":"2024-08-07T09:47:56.000Z","size":10708,"stargazers_count":1112,"open_issues_count":25,"forks_count":166,"subscribers_count":36,"default_branch":"master","last_synced_at":"2024-09-21T08:32:46.377Z","etag":null,"topics":["aws-s3","dropbox","file-sharing","file-upload","files","google-storage","gridfs","http","meteor","meteor-files","meteor-package","upload","websockets"],"latest_commit_sha":null,"homepage":"https://packosphere.com/ostrio/files","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/veliovgroup.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"dr-dimitru","custom":"https://paypal.me/veliovgroup"}},"created_at":"2015-04-16T14:42:36.000Z","updated_at":"2024-08-19T22:18:15.000Z","dependencies_parsed_at":"2023-02-19T00:46:05.080Z","dependency_job_id":"481e6fe2-98e9-4722-a9da-1ed31f977de8","html_url":"https://github.com/veliovgroup/Meteor-Files","commit_stats":null,"previous_names":[],"tags_count":111,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veliovgroup%2FMeteor-Files","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veliovgroup%2FMeteor-Files/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veliovgroup%2FMeteor-Files/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veliovgroup%2FMeteor-Files/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/veliovgroup","download_url":"https://codeload.github.com/veliovgroup/Meteor-Files/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219871828,"owners_count":16554457,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws-s3","dropbox","file-sharing","file-upload","files","google-storage","gridfs","http","meteor","meteor-files","meteor-package","upload","websockets"],"created_at":"2024-09-25T19:09:56.531Z","updated_at":"2025-09-27T01:30:33.445Z","avatar_url":"https://github.com/veliovgroup.png","language":"JavaScript","readme":"[![support](https://img.shields.io/badge/support-GitHub-white)](https://github.com/sponsors/dr-dimitru)\n[![support](https://img.shields.io/badge/support-PayPal-white)](https://paypal.me/veliovgroup)\n[![Mentioned in Awesome ostrio:files](https://awesome.re/mentioned-badge.svg)](https://project-awesome.org/Urigo/awesome-meteor#files)\n[![GitHub stars](https://img.shields.io/github/stars/veliovgroup/Meteor-Files.svg)](https://github.com/veliovgroup/Meteor-Files/stargazers)\n\u003ca href=\"https://ostr.io/info/built-by-developers-for-developers?ref=github-files-repo-top\"\u003e\u003cimg src=\"https://ostr.io/apple-touch-icon-60x60.png\" alt=\"ostr.io\" height=\"20\"\u003e\u003c/a\u003e\n\u003ca href=\"https://meteor-files.com/?ref=github-files-repo-top\"\u003e\u003cimg src=\"https://meteor-files.com/apple-touch-icon-60x60.png\" alt=\"meteor-files.com\" height=\"20\"\u003e\u003c/a\u003e\n\n# Files for Meteor.js\n\nStable, fast, robust, and well-maintained Meteor.js package for files management using MongoDB Collection API. Call [`.insertAsync()`](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/insertAsync.md) method to initiate a file upload and to insert new record into MongoDB collection after upload is complete. Calling [`.removeAsync()`](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/removeAsync.md) method would erase stored file and record from MongoDB Collection. And so on, no need to learn new APIs. Hackable via hooks and events. Supports uploads to AWS:S3, GridFS, Google Storage, DropBox, and other 3rd party storage.\n\n## ToC:\n\n- [📔 Documentation](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/toc.md) - Docs, API, Demos, Examples\n- [✨ Key features](https://github.com/veliovgroup/Meteor-Files#key-features)\n- [📔 API Documentation](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/readme.md)\n- __⚡️ Quick start__:\n  - [🔧 Installation](https://github.com/veliovgroup/Meteor-Files#installation)\n  - [👨‍💻 Usage example](https://github.com/veliovgroup/Meteor-Files#api-overview)\n- [🤔 FAQ](https://github.com/veliovgroup/Meteor-Files#faq)\n- [🏅 Awards](https://github.com/veliovgroup/Meteor-Files#awards)\n- [🙋‍♂️ Get Help](https://github.com/veliovgroup/Meteor-Files#get-support)\n- [🗂️ Demo applications](https://github.com/veliovgroup/Meteor-Files#demo-applications)\n- [📦 Related Packages](https://github.com/veliovgroup/Meteor-Files#related-packages)\n- [🎗 Support this project](https://github.com/veliovgroup/Meteor-Files#support-meteor-files-project)\n- [👨‍💻 Contribute to this project](https://github.com/veliovgroup/Meteor-Files#contribution)\n- [🙏 Supporters](https://github.com/veliovgroup/Meteor-Files#supporters)\n\n## Key features\n\n- Compatible with all front-end frameworks from Blaze to [React](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/react-example.md)\n- Upload via `HTTP` and `DDP` transports, [read about difference](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/about-transports.md)\n- Sustainable and \"resumable\" uploads will auto-resume when connection interrupted or server rebooted\n- Upload files through computing cloud without persistent File System, like Heroku (*\"resumable\" uploads are not supported on Heroku and alike*)\n- Use *[GridFS](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/gridfs-bucket-integration.md#use-gridfs-with-gridfsbucket-as-a-storage)*, *[AWS S3](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/aws-s3-integration.md)*, *[Google Storage](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/google-cloud-storage-integration.md)* or *[DropBox](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/dropbox-integration.md)* and other (*[3rd-party storage](hhttps://github.com/veliovgroup/Meteor-Files/blob/master/docs/3rd-party-storage.md)*)\n- APIs for checking file mime-type, size, extension, an other file's properties before upload using *[`onBeforeUpload` hook](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/constructor.md)*\n- APIs for [resizing images](https://github.com/veliovgroup/meteor-files-website/blob/master/imports/server/image-processing.js#L19), *[subversions management](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/file-subversions.md)*, and other post-processing tasks using *[`onAfterUpload`](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/constructor.md)* and *[`onAfterRemove`](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/constructor.md)* hooks\n\n## Installation:\n\nInstall [`ostrio:files` from Atmosphere](https://atmospherejs.com/ostrio/files)\n\n```shell\nmeteor add ostrio:files\n```\n\n### ES6 Import:\n\nImport in isomorphic location (e.g. on server and client)\n\n```js\nimport { FilesCollection } from 'meteor/ostrio:files';\n```\n\n## API overview\n\nFor detailed docs, examples, and API — read [documentation section](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/readme.md).\n\n__Main methods:__\n\n- [`FilesCollection` Constructor](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/constructor.md) [*Anywhere*] - Initialize FilesCollection\n- [`insertAsync()`](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/insertAsync.md) [*Client*] - Upload a file to server, returns `FileUpload` instance\n- [`link()`](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/link.md) [*Anywhere*] - Generate downloadable link\n- [`find()`](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/find.md) [*Anywhere*] - Find all files matching selector, returns [`FilesCursor` instance](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/FilesCursor.md)\n- [`findOneAsync()`](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/findOneAsync.md) [*Anywhere*] - Find a single file record matching selector, returns [`FileCursor` instance](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/FileCursor.md)\n- [`removeAsync()`](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/removeAsync.md) [*Anywhere*] - Asynchronously remove files from FilesCollection and \"unlink\" (e.g. remove) from Server\n- [`addFile()`](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/addFile.md) [*Server*] - Add local file to FilesCollection from FS\n- [`loadAsync()`](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/loadAsync.md) [*Server*] - Write file to FS and FilesCollection from remote URL\n- [`writeAsync()`](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/writeAsync.md) [*Server*] - Write `Buffer` to FS and FilesCollection\n\n### Constructor\n\n__[*Anywhere*]__. Initiate file's collection in the similar way to `Mongo.Collection` with optional settings related to file-uploads. Read full docs for [`FilesCollection` Constructor in the API documentation](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/constructor.md).\n\n```js\nimport { FilesCollection } from 'meteor/ostrio:files';\nnew FilesCollection(FilesCollectionConfig);\n```\n\nPass additional options to control upload-flow\n\n```js\n// shared: /imports/lib/collections/images.collection.js\nimport { Meteor } from 'meteor/meteor';\nimport { FilesCollection } from 'meteor/ostrio:files';\n\nconst imagesCollection = new FilesCollection({\n  collectionName: 'images',\n  allowClientCode: false, // Disallow remove files from Client\n  onBeforeUpload(file) {\n    // Allow upload files under 10MB, and only in png/jpg/jpeg formats\n    if (file.size \u003c= 10485760 \u0026\u0026 /png|jpg|jpeg/i.test(file.extension)) {\n      return true;\n    }\n    return 'Please upload image, with size equal or less than 10MB';\n  }\n});\n\nif (Meteor.isClient) {\n  // SUBSCRIBE TO ALL UPLOADED FILES ON THE CLIENT\n  Meteor.subscribe('files.images.all');\n}\n\nif (Meteor.isServer) {\n  // PUBLISH ALL UPLOADED FILES ON THE SERVER\n  Meteor.publish('files.images.all', function () {\n    return imagesCollection.collection.find();\n  });\n}\n```\n\n### Upload a file\n\n```ts\nimport { FilesCollection } from 'meteor/ostrio:files';\nconst files = new FilesCollection(FilesCollectionConfig);\nfiles.insertAsync(config: InsertOptions, autoStart?: boolean): Promise\u003cFileUpload | UploadInstance\u003e;\n```\n\nRead full docs for [`insertAsync()` method](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/insertAsync.md)\n\nUpload form (template):\n\n```html\n\u003ctemplate name=\"uploadForm\"\u003e\n  {{#with currentUpload}}\n    Uploading \u003cb\u003e{{file.name}}\u003c/b\u003e:\n    \u003cspan id=\"progress\"\u003e{{progress.get}}%\u003c/span\u003e\n  {{else}}\n    \u003cinput id=\"fileInput\" type=\"file\" /\u003e\n  {{/with}}\n\u003c/template\u003e\n```\n\nShared code:\n\n```js\nimport { FilesCollection } from 'meteor/ostrio:files';\nconst imagesCollection = new FilesCollection({collectionName: 'images'});\nexport default imagesCollection; // import in other files\n```\n\nClient's code:\n\n```js\nimport { Template } from 'meteor/templating';\nimport { ReactiveVar } from 'meteor/reactive-var';\nTemplate.uploadForm.onCreated(function () {\n  this.currentUpload = new ReactiveVar(false);\n});\n\nTemplate.uploadForm.helpers({\n  currentUpload() {\n    return Template.instance().currentUpload.get();\n  }\n});\n\nTemplate.uploadForm.events({\n  async 'change #fileInput'(e, template) {\n    if (e.currentTarget.files \u0026\u0026 e.currentTarget.files[0]) {\n      // We upload only one file, in case\n      // multiple files were selected\n      const upload = await imagesCollection.insertAsync({\n        file: e.currentTarget.files[0],\n        chunkSize: 'dynamic'\n      }, false);\n\n      upload.on('start', function () {\n        template.currentUpload.set(this);\n      });\n\n      upload.on('end', function (error, fileObj) {\n        if (error) {\n          alert(`Error during upload: ${error}`);\n        } else {\n          alert(`File \"${fileObj.name}\" successfully uploaded`);\n        }\n        template.currentUpload.set(false);\n      });\n\n      await upload.start();\n    }\n  }\n});\n```\n\nFor multiple file upload see [this demo code](https://github.com/veliovgroup/meteor-files-website/blob/master/imports/client/upload/upload-form.js#L130).\n\nUpload base64 string (*introduced in v1.7.1*):\n\n```js\n// As dataURI\nawait imagesCollection.insertAsync({\n  file: 'data:image/png,base64str…',\n  isBase64: true, // \u003c— Mandatory\n  fileName: 'pic.png' // \u003c— Mandatory\n});\n\n// As plain base64:\nawait imagesCollection.insertAsync({\n  file: 'base64str…',\n  isBase64: true, // \u003c— Mandatory\n  fileName: 'pic.png', // \u003c— Mandatory\n  type: 'image/png' // \u003c— Mandatory\n});\n```\n\nFor more expressive example see [Upload demo app](https://github.com/veliovgroup/Meteor-Files-Demos/tree/master/demo-simplest-upload)\n\n### Stream files\n\nTo display files you can use [`fileURL`](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/template-helper.md) template helper or [`link()`](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/link.md) method of [`FileCursor` instance](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/FileCursor.md).\n\nTemplate:\n\n```html\n\u003ctemplate name='file'\u003e\n  \u003cimg src=\"{{imageFile.link}}\" alt=\"{{imageFile.name}}\" /\u003e\n  \u003c!-- Same as: --\u003e\n  \u003c!-- \u003cimg src=\"{{fileURL imageFile}}\" alt=\"{{imageFile.name}}\" /\u003e --\u003e\n  \u003chr\u003e\n  \u003cvideo height=\"auto\" controls=\"controls\"\u003e\n    \u003csource src=\"{{videoFile.link}}?play=true\" type=\"{{videoFile.type}}\" /\u003e\n    \u003c!-- Same as: --\u003e\n    \u003c!-- \u003csource src=\"{{fileURL videoFile}}?play=true\" type=\"{{videoFile.type}}\" /\u003e --\u003e\n  \u003c/video\u003e\n\u003c/template\u003e\n```\n\nShared code:\n\n```js\nimport { Meteor } from 'meteor/meteor';\nimport { FilesCollection } from 'meteor/ostrio:files';\n\nconst imagesCollection = new FilesCollection({ collectionName: 'images' });\nconst videosCollection = new FilesCollection({ collectionName: 'videos' });\n\nif (Meteor.isServer) {\n  // Upload sample files on server's startup:\n  Meteor.startup(async () =\u003e {\n    await imagesCollection.loadAsync('https://raw.githubusercontent.com/veliovgroup/Meteor-Files/master/logo.png', {\n      fileName: 'logo.png'\n    });\n    await videosCollection.loadAsync('http://www.sample-videos.com/video/mp4/240/big_buck_bunny_240p_5mb.mp4', {\n      fileName: 'Big-Buck-Bunny.mp4'\n    });\n  });\n\n  Meteor.publish('files.images.all', function () {\n    return imagesCollection.collection.find();\n  });\n\n  Meteor.publish('files.videos.all', function () {\n    return videosCollection.collection.find();\n  });\n} else {\n  // Subscribe to file's collections on Client\n  Meteor.subscribe('files.images.all');\n  Meteor.subscribe('files.videos.all');\n}\n```\n\nClient's code:\n\n```js\n// imports/client/file/file.js\nimport '/imports/client/file/file.html';\nimport imagesCollection from '/imports/lib/collections/images.collection.js';\n\nTemplate.file.helpers({\n  imageFile() {\n    return imagesCollection.findOne();\n  },\n  videoFile() {\n    return videosCollection.findOne();\n  }\n});\n```\n\nFor more expressive example see [Streaming demo app](https://github.com/veliovgroup/Meteor-Files-Demos/tree/master/demo-simplest-streaming)\n\n### Download button\n\nCreate collection available to Client and Server\n\n```js\n// imports/lib/collections/images.collection.js\nimport { Meteor } from 'meteor/meteor';\nimport { FilesCollection } from 'meteor/ostrio:files';\nconst imagesCollection = new FilesCollection({ collectionName: 'images' });\n\nif (Meteor.isServer) {\n  // Load sample image into FilesCollection on server's startup:\n  Meteor.startup(async () =\u003e {\n    await imagesCollection.loadAsync('https://raw.githubusercontent.com/veliovgroup/Meteor-Files/master/logo.png', {\n      fileName: 'logo.png',\n    });\n  });\n\n  Meteor.publish('files.images.all', function () {\n    return imagesCollection.collection.find();\n  });\n} else {\n  // Subscribe on the client\n  Meteor.subscribe('files.images.all');\n}\n```\n\nCreate template, call `.link` method on the `FileCursor` returned from `file` helper\n\n```html\n\u003c!-- imports/client/file/file.html --\u003e\n\u003ctemplate name='file'\u003e\n  \u003ca href=\"{{file.link}}?download=true\" download=\"{{file.name}}\" target=\"_parent\"\u003e\n    {{file.name}}\n  \u003c/a\u003e\n\u003c/template\u003e\n```\n\nCreate controller for `file` template with `file` helper that returns `FileCursor` with `.link()` method\n\n```js\n// imports/client/file/file.js\nimport '/imports/client/file/file.html';\nimport imagesCollection from '/imports/lib/collections/images.collection.js';\n\nTemplate.file.helpers({\n  file() {\n    return imagesCollection.findOne();\n  }\n});\n```\n\nFor more expressive example see [Download demo](https://github.com/veliovgroup/Meteor-Files-Demos/tree/master/demo-simplest-download-button)\n\n## FAQ:\n\n1. __Where are files stored by default?__: by default if `config.storagePath` isn't set in [*Constructor* options](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/constructor.md) it's equals to `assets/app/uploads` and relative to running script:\n    - __a.__ On `development` stage: `yourDevAppDir/.meteor/local/build/programs/server`. __Note: All files will be removed as soon as your application rebuilds__ or you run `meteor reset`. To keep your storage persistent during development use an absolute path *outside of your project folder*, e.g. `/data` directory.\n    - __b.__ On `production`: `yourProdAppDir/programs/server`. __Note: If using MeteorUp (MUP), Docker volumes must to be added to__ `mup.json`, see [MUP usage](hhttps://github.com/veliovgroup/Meteor-Files/blob/master/docs/meteorup-usage.md)\n2. __Cordova usage and development__: With support of community we do regular testing on virtual and real devices. To make sure `Meteor-Files` library runs smoothly in Cordova environment — enable [withCredentials](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials); enable `{allowQueryStringCookies: true}` and `{allowedOrigins: true}` on both `Client` and `Server`. For more details read [Cookie's repository FAQ](https://github.com/veliovgroup/Meteor-Cookies#faq)\n3. __meteor-desktop usage and development__: Meteor-Files can be used in [meteor-desktop](https://github.com/Meteor-Community-Packages/meteor-desktop) projects as well. As meteor-desktop works exactly like Cordova, all Cordova requirements and recommendations apply\n4. __How to pause/continue upload and get progress/speed/remaining time?__: see *FileUpload* instance returned from [`insertAsync` method](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/insertAsync.md)\n5. When using any of `accounts` packages - package `accounts-base` must be explicitly added to `.meteor/packages` __above__ `ostrio:files`\n6. __cURL/POST uploads__ - Take a look on [POST-Example](https://github.com/noris666/Meteor-Files-POST-Example) by [@noris666](https://github.com/noris666)\n7. In __Safari__ (Mobile and Desktop) for `DDP` chunk size is reduced by algorithm, due to error thrown if frame is too big. This issue should be fixed in Safari 11. Switching to `http` transport (*which has no such issue*) is recommended for Safari. See [#458](https://github.com/veliovgroup/Meteor-Files/issues/458)\n8. Make sure you're using single domain for the Meteor app, and the same domain for hosting Meteor-Files endpoints, see [#737](https://github.com/veliovgroup/Meteor-Files/issues/737) for details\n9. When requests are proxied to `FilesCollection` endpoint make sure protocol `http/1.1` is used, see [#742](https://github.com/veliovgroup/Meteor-Files/issues/742) for details\n\n## Awards:\n\n\u003ca href=\"https://themeteorchef.com/blog/giant-cotton-apron-awards-show\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/veliovgroup/Meteor-Files-Demos/master/GCAA.png\" alt=\"GCAA award\" width=\"120\"\u003e\n\u003c/a\u003e\n\n## Get Support:\n\n- [Ask a question or submit an issue](https://github.com/veliovgroup/Meteor-Files/issues)\n- [Releases / Changelog / History](https://github.com/veliovgroup/Meteor-Files/releases)\n- For more docs and examples [read wiki](https://github.com/veliovgroup/Meteor-Files/blob/master/docs/readme.md)\n\n## Demo applications:\n\nFully-featured file-sharing app:\n\n- [Live: __files.veliov.com__](https://files.veliov.com)\n- [Source Code Rep](https://github.com/veliovgroup/meteor-files-website)\n\nOther demos:\n\n- [Simplest Upload demo app](https://github.com/veliovgroup/Meteor-Files-Demos/tree/master/demo-simplest-upload)\n- [Simplest Download demo](https://github.com/veliovgroup/Meteor-Files-Demos/tree/master/demo-simplest-download-button)\n- [Simplest Streaming demo app](https://github.com/veliovgroup/Meteor-Files-Demos/tree/master/demo-simplest-streaming)\n\n## Related Packages:\n\n- [pyfiles (meteor-python-files)](https://github.com/veliovgroup/meteor-python-files) Python Client for Meteor-Files package\n- [meteor-autoform-file](https://github.com/veliovgroup/meteor-autoform-file) - Upload and manage files with [autoForm](https://github.com/aldeed/meteor-autoform)\n\n## Support Meteor-Files project:\n\n- 🗃️ Upload and share files using [meteor-files.com](https://meteor-files.com/?ref=github-files-repo-footer) — Continue interrupted file uploads without losing any progress. There is nothing that will stop Meteor from delivering your file to the desired destination\n- 👨‍💻 Improve your project using [ostr.io](https://ostr.io?ref=github-files-repo-footer) for [Server Monitoring](https://snmp-monitoring.com), [Web Analytics](https://ostr.io/info/web-analytics?ref=github-files-repo-footer), [WebSec](https://domain-protection.info), [Web-CRON](https://web-cron.info) and [SEO Pre-rendering](https://prerendering.com)\n- 💵 [Sponsor via GitHub](https://github.com/sponsors/dr-dimitru)\n- 💵 [Support via PayPal](https://paypal.me/veliovgroup)\n- ⭐️ Star on [GitHub](https://github.com/veliovgroup/Meteor-Files)\n- ⭐️ Star on [Atmosphere](https://atmospherejs.com/ostrio/files)\n\n## Contribution:\n\n- __Want to help?__ Please check [issues](https://github.com/veliovgroup/Meteor-Files/issues) for open and tagged as [`help wanted` issues](https://github.com/veliovgroup/Meteor-Files/issues?q=is%3Aissue+is%3Aopen+label%3A\"help+wanted\");\n- __Want to contribute?__ Read and follow [PR rules](https://github.com/veliovgroup/Meteor-Files/blob/master/.github/PULL_REQUEST_TEMPLATE). All PRs are welcome on [`dev` branch](https://github.com/veliovgroup/Meteor-Files/tree/dev). Please, always give expressive description to your changes and additions.\n\n## Supporters:\n\nWe would like to thank everyone who support this project\n\n- [@vanshady](https://github.com/vanshady)\n- [@Neophen](https://github.com/Neophen)\n- [@rikyperdana](https://github.com/rikyperdana)\n- [@derwok](https://github.com/derwok), check out his project - [4minitz](https://www.4minitz.com/)\n- [@FinnFrotscher](https://github.com/FinnFrotscher)\n- [@Neobii](https://github.com/Neobii)\n- [@themeteorchef](https://github.com/themeteorchef)\n- [@MeDBejoHok](https://github.com/medbejohok)\n- [@martunta](https://github.com/martunta)\n","funding_links":["https://github.com/sponsors/dr-dimitru","https://paypal.me/veliovgroup"],"categories":["Packages"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fveliovgroup%2FMeteor-Files","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fveliovgroup%2FMeteor-Files","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fveliovgroup%2FMeteor-Files/lists"}