Socket
Socket
Sign inDemoInstall

ember-cli-file-saver

Package Overview
Dependencies
5
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    ember-cli-file-saver

Provides file saving capability to an Ember CLI application.


Version published
Weekly downloads
4.1K
increased by13.23%
Maintainers
1
Install size
13.9 MB
Created
Weekly downloads
 

Readme

Source

Ember-cli-file-saver

Provides support to save binary file from an API for an Ember CLI application.

Installation

Install the ember-cli addon in your ember-cli project:

$ ember install ember-cli-file-saver

This should also automatically:

  • add an NPM dependency to FileSaver.
  • add a transport layer for jQuery to handle arraybuffer and blob dataType.

Note that to make this new transport layer works nicely with ember-data it is necessary to make your adapter extend the adapter-arraybuffer-mixin mixin and pass either arraybuffer:true or blob:true as an AJAX option, otherwise ember-data will try to interpret the response as JSON.

Usage

ES6 Import

This addon provides the ability to import FileSaver as an ES6 module.

import FileSaver from 'file-saver';

Adapter Mixin for ArrayBuffer / Blob response

import ActiveModelAdapter from 'active-model-adapter';
import AdapterArrayBufferMixin from 'ember-cli-file-saver/mixins/adapter-arraybuffer-mixin';

const ApplicationAdapter = ActiveModelAdapter.extend(AdapterArrayBufferMixin);

ApplicationAdapter.reopen({
 // 
});

export default ApplicationAdapter;

Download from a component

import Ember from 'ember';
import FileSaverMixin from 'ember-cli-file-saver/mixins/file-saver';

const { Component, computed } = Ember;

export default Component.extend(FileSaverMixin, {

  tagName: 'button',

  click() {
    this.get('ajax').request(this.get('downloadUrl'), {
      method: 'GET',
      dataType: 'arraybuffer', // or 'blob'
      processData: false
    })
    .then((content) => this.saveFileAs(this.get('filename'), content, this.get('contentType')));
  }
});

Using from a model

This works well with the ember-api-actions project:

// models/invoice.js

import Ember from 'ember';
import DS from 'ember-data';
import { memberAction } from 'ember-api-actions';

const { computed } = Ember;
const { belongsTo, attr, Model } = DS;

export default Model.extend({

  invoiceNumber: attr('number'),

  download: memberAction({ path: 'download', type: 'GET', ajaxOptions: { arraybuffer: true } })
});
// in a component

invoiceModel
  .download()
  .then((pdfContent) => this.saveFileAs('invoice.pdf', pdfContent, 'application/pdf'));

Installation

  • git clone <repository-url> this repository
  • cd ember-cli-file-saver
  • npm install

Running

Running Tests

  • npm test (Runs ember try:each to test your addon against multiple Ember versions)
  • ember test
  • ember test --server

Building

  • ember build

For more information on using ember-cli, visit http://ember-cli.com/.

Keywords

FAQs

Last updated on 01 Mar 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc