gpt4 book ai didi

ember.js - 使用 Ember 数据上传文件

转载 作者:行者123 更新时间:2023-12-03 11:21:45 26 4
gpt4 key购买 nike

有人可以提供有关使用 EmberJS 和 Ember Data 实现带有文件字段的表单的代码示例或文档吗?

我已经熟悉 Ember Data,但我不确定如何正确实现文件上传。

最佳答案

这是我编写的用于文件上传的 ember-data 适配器的一部分(同一服务器 - 不是跨域)

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”助手进行多部分文件上传,但它是一个很好的概念证明。

这是带有上述适配器的 ember-data 模型
PersonApp.Person = DS.Model.extend({
id: DS.attr('number'),
username: DS.attr('string'),
attachment: DS.attr('string')
});

这是 Handlebars 模板
<script type="text/x-handlebars" data-template-name="person">
{{view PersonApp.UploadFileView name="logo_image" contentBinding="content"}}
</script>

这是自定义的 ember View
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]);
}
}
});

如果您想在实际操作中看到一个完整的峰值,请查看我最近做的多文件上传示例。

https://github.com/toranb/ember-file-upload

关于ember.js - 使用 Ember 数据上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9200000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com