This Ember-CLI addon adds file uploads through FormData to the Ember Data
npm install ember-cli-form-data --save-dev
Add a file field on the model
// models/post.js
export default DS.Model.extend({
attachment: DS.attr('file'),
...
});
Add the FormDataMixin to your post adapter. Run ember g adapter post
if you don't have the adapter.
// adapters/post.js
import FormDataAdapterMixin from 'ember-cli-form-data/mixins/form-data-adapter';
export default ApplicationAdapter.extend(FormDataAdapterMixin, {
// Adapter code
});
Then you can use an <input type='file' id='file-field'/>
to send the attachment:
var file = document.getElementById('file-field').files[0];
model.set('attachment', file);
model.save();
This will send the attachment
and all other attributes as a FormData object.
Some api's desire the form data fields to not include the root object
name. For example, the default adapter behavior would result in post[title]
in your serialized data. If your api instead expects just title
,
add disableRoot: true
to remove the model name from the fields.
This addon was inspired by Matt Beedle's blog post http://blog.mattbeedle.name/posts/file-uploads-in-ember-data/