यहाँ एक एंबर-डेटा अनुकूलक मैं करने के लिए लिखा था का हिस्सा है
फ़ाइलों के लिए क्लाइंट-साइड में गड़बड़ी के बारे में यहाँ और अधिक पढ़ें (-not क्रॉस डोमेन एक ही सर्वर) फ़ाइल अपलोड कर
DS.DjangoRESTAdapter = DS.RESTAdapter.extend({
bulkCommit: false,
createRecord: function(store, type, record) {
var root = this.rootForType(type), json = {};
var data = new FormData();
data.append('username', record.get('username'));
data.append('attachment', record.get('attachment'));
this.django_file_ajax('http://localhost:8000/people/new/', "POST", {
data: data,
context: this,
success: function(pre_json) {
json[root] = pre_json;
this.didCreateRecord(store, type, record, json);
}
});
},
django_file_ajax: function(url, type, hash) {
hash.url = url;
hash.type = type;
hash.contentType = false;
hash.processData = false;
hash.context = this;
jQuery.ajax(hash);
}
});
})();
यह अनुकूल IE8 नहीं कर रहा है के रूप में है, क्योंकि मैं बहुखण्डीय च करने के लिए "FormData" सहायक उपयोग कर रहा हूँ ile अपलोड करें लेकिन यह अवधारणा का एक अच्छा सबूत है।
यहाँ डब्ल्यू/ऊपर अनुकूलक
PersonApp.Person = DS.Model.extend({
id: DS.attr('number'),
username: DS.attr('string'),
attachment: DS.attr('string')
});
यहाँ जाना एंबर-डेटा मॉडल है हैंडल टेम्पलेट
<script type="text/x-handlebars" data-template-name="person">
{{view PersonApp.UploadFileView name="logo_image" contentBinding="content"}}
</script>
यहां कस्टम एंबर दृश्य
PersonApp.PersonView = Ember.View.extend({
templateName: 'person'
});
PersonApp.UploadFileView = Ember.TextField.extend({
type: 'file',
attributeBindings: ['name'],
change: function(evt) {
var self = this;
var input = evt.target;
if (input.files && input.files[0]) {
var reader = new FileReader();
var that = this;
reader.onload = function(e) {
var fileToUpload = e.srcElement.result;
var person = PersonApp.Person.createRecord({ username: 'heyo', attachment: fileToUpload });
self.get('controller.target').get('store').commit();
}
reader.readAsDataURL(input.files[0]);
}
}
});
है यदि आप एक्शन चेकआउट में इस के साथ एक पूर्ण उड़ा हुआ स्पाइक देखना चाहते हैं तो एक बहु फ़ाइल अपलोड उदाहरण मैंने हाल ही में किया था y। नीचे दिए गए लिंक पर
https://github.com/toranb/ember-file-upload
यदि आपको IE10 से कम कुछ भी समर्थन करना है, तो अभी के अनुसार, नीचे दिए गए सभी उत्तर काम नहीं करेंगे। आईई 10 से पहले, यदि आप एसिंक्रोनस कुछ भी करना चाहते हैं तो आपको अपने फ़ाइल को अपने शेष डेटा से अलग करने और अपलोड करने के लिए एक छिपी आईफ्रेम बनाना होगा। IER में FileReader और FormData समर्थित नहीं हैं। साधारण रूप से, जब तक कि आप वास्तव में अपने आधुनिकता को "आधुनिक" ब्राउज़र पर सीमित नहीं कर लेते हैं, ये उत्तर अपर्याप्त हैं। –