Extjs 将文件从文件上载转换为base64
我在extjs“fileuploadfield”(Ext.form.field.file)中使用文件上传程序,在我的按钮处理程序中,我希望将其作为base64上传Extjs 将文件从文件上载转换为base64,extjs,extjs4,Extjs,Extjs4,我在extjs“fileuploadfield”(Ext.form.field.file)中使用文件上传程序,在我的按钮处理程序中,我希望将其作为base64上传 handler: function(){ if(self.getForm().isValid()){ self.getForm().submit({ url: myURL, headers: {
handler: function(){
if(self.getForm().isValid()){
self.getForm().submit({
url: myURL,
headers: {
'Accept': 'application/json; charset=utf-8'
},
我想要这样的东西:
handler: function(){
if(self.getForm().isValid()){
var f = self.getForm().getFileStream();
var base64 = convertToBase64(f);
var params = {};
params.base64 = base64;
Ext.Ajax.request({
params: params,
scope: this,
url: myURL,
method: 'POST',
callback: function (options, success, response) {
}
)
}
在哪里可以从表单对象获取文件数据?我可以使用什么转换为base64?我处理这个问题的逻辑正确吗?请试试这个
Ext.onReady(function() {
Ext.create('Ext.form.field.File', {
id: 'uploadFile',
renderTo: 'example-form',
emptyText: 'Select a file to upload...',
fieldLabel: 'File upload',
labelAlign: 'right',
labelSeparator: ' ',
buttonText: 'Select file...',
labelWidth: 107,
padding: '3 0 0 20',
width: 400,
listeners: {
'change': function(fileUploadComponent, value, eOpts) {
this.onFileChange(fileUploadComponent, value, eOpts);
}
},
onFileChange: function(fileUploadComponent, value, eOpts) {
var file = Ext.getCmp('uploadFile').getEl().down('input[type=file]').dom.files[0];
if (file != null) {
var reader = new FileReader();
reader.readAsArrayBuffer(file);
reader.onloadend = function(oFREvent) {
var byteArray= new Uint8Array(oFREvent.target.result);
var len = byteArray.byteLength;
var binary = '';
for (var i = 0; i < len; i++) {
binary += String.fromCharCode(byteArray[i]);
}
byteArray= window.btoa(binary);
alert(byteArray);
}
}
}
});
});
以下是上传后是否希望将文件转换为javascript中的Base64?请检查此提琴。我已将文件转换为Base64。您可以将其传递给api。您可以将其解码为byteArray,然后在Java中解码为InputByTestStream。让我知道,如果这是你想要的,我会把它作为答案和其他关于如何在Java中将其解码为byteArray和InputByTestStream的详细信息发布。谢谢这太完美了。请以回答者的身份发布。作为答案发布。如果对您有效,请接受。谢谢。使用reader.readAsDataURL()也可以轻松完成此操作,请参阅
public InputStream persistFile(String imageByteArray){
byte[] byteArray = com.sun.org.apache.xerces.internal.impl.dv.util.Base64.decode(imageByteArray);
InputStream is = new ByteArrayInputStream(byteArray);
return is;
}