使用 ember js 并支持 IE8 上传文件的正确方法
Right way to upload files with ember js and with support of IE8
我在将文件从 ember.js 前端上传到 grails 后端时遇到问题。由于支持 IE8,我无法使用任何 ember 插件,例如 ember-uploader。任何建议如何解决这个问题?
BlueImp 的 jQuery 文件上传声称它支持 IE 6+。阅读更多相关信息:
https://github.com/blueimp/jQuery-File-Upload
我通过这样的 Ember 组件使用它:
{{file-upload uploadUrl=uploadUrl filename="files"
buttonText="Upload files"
hiddenName="fileId" hiddenValue=fileId
uploaded="filesUploaded"}}
并在组件的didInsertElement
:
中初始化插件
didInsertElement: function() {
var self = this;
this.$('#'+this.get('inputId')).fileupload({
dataType: 'json',
url: this.get('uploadUrl'),
formData: function() {
return [{name: self.get('hiddenName'), value: self.get('hiddenValue')}];
},
done: function(e, data) {
self.sendAction('uploaded', data.result);
self.markCompleted(data.result.filenames);
},
fail: function (e, data) {
self.sendAction('failed', data.result);
},
add: function(e, data) {
data.process().done(function () {
data.submit();
});
},
});
感谢 kielni 的回复,但我使用的方法与您的方法不同。
我使用了这个博客 post 中的解决方案:Cross-browser AJAX uploads with Ember.js and mOxie
以及对我有用的组件代码:
var fileInput = new mOxie.FileInput({
browse_button: this.$('.file-pick-button').get(0),
multiple: false
});
fileInput.onchange = function (e) {
var file = fileInput.files[0];
var reader = new mOxie.FileReader();
reader.onloadend = function () {
ajax({
type: "POST",
timeout: 5000,
url: config.serverURL + '/files/',
data: {
transportID: id,
filename: file.name,
file: reader.result
}
});
};
reader.readAsBinaryString(file);
};
fileInput.init();
我在将文件从 ember.js 前端上传到 grails 后端时遇到问题。由于支持 IE8,我无法使用任何 ember 插件,例如 ember-uploader。任何建议如何解决这个问题?
BlueImp 的 jQuery 文件上传声称它支持 IE 6+。阅读更多相关信息: https://github.com/blueimp/jQuery-File-Upload
我通过这样的 Ember 组件使用它:
{{file-upload uploadUrl=uploadUrl filename="files"
buttonText="Upload files"
hiddenName="fileId" hiddenValue=fileId
uploaded="filesUploaded"}}
并在组件的didInsertElement
:
didInsertElement: function() {
var self = this;
this.$('#'+this.get('inputId')).fileupload({
dataType: 'json',
url: this.get('uploadUrl'),
formData: function() {
return [{name: self.get('hiddenName'), value: self.get('hiddenValue')}];
},
done: function(e, data) {
self.sendAction('uploaded', data.result);
self.markCompleted(data.result.filenames);
},
fail: function (e, data) {
self.sendAction('failed', data.result);
},
add: function(e, data) {
data.process().done(function () {
data.submit();
});
},
});
感谢 kielni 的回复,但我使用的方法与您的方法不同。
我使用了这个博客 post 中的解决方案:Cross-browser AJAX uploads with Ember.js and mOxie
以及对我有用的组件代码:
var fileInput = new mOxie.FileInput({
browse_button: this.$('.file-pick-button').get(0),
multiple: false
});
fileInput.onchange = function (e) {
var file = fileInput.files[0];
var reader = new mOxie.FileReader();
reader.onloadend = function () {
ajax({
type: "POST",
timeout: 5000,
url: config.serverURL + '/files/',
data: {
transportID: id,
filename: file.name,
file: reader.result
}
});
};
reader.readAsBinaryString(file);
};
fileInput.init();