Ext 中的上传效果怎么做,我是在数据库表中有一列数据 填写数据后,有一个浏览按钮,选中数据要进行保存
1个回答
展开全部
出于安全原因JS无法访问客户端本地资源(文件系统, 摄像头==), 跟框架无关.
只能使用标准input(type="file" 当然该标签的值对JS也是不访问的)标签, 由浏览器实现本地文件系统访问, 然后随包含input的form一同POST到服务器端, 在服务器端可以访问request里的stream.
Ext包装了文件上传功能, 通过修改form的target到隐藏IFrame实现伪异步, 从而保持Ext.Ajax的一致编程外观.
目前项目正在使用的前台代码(ExtJs 3.0), 提供参考:
function(loadData, scope, url){
//loadData 回调
//scope 回调方法的this对象
//url上传的服务器路径
var _upload = function(){
//var _head = _tab.form.getForm().getValues();
refUtilNS.waitBox(true, '正在上传文件, 请稍候...');
Ext.Ajax.request({
url: url ? url : '../common/fileImport.action',
method: 'POST',
//jsonData: {head: _head},
form: _form.getForm().id,
isUpload: true,
success: function(resp, ops){
refUtilNS.waitBox(false);
var obj = Ext.decode(resp.responseText);
if (obj.success){
loadData.call(scope, obj.data);
}else{
Ext.Msg.alert('错误', '导入文件失败: ' + obj.message);
}
_win.close();
},
failure: function(){
refUtilNS.waitBox(false);
Ext.Msg.alert('错误', '连接服务器失败!');
_win.close();
}
});
};
var _form = new Ext.form.FormPanel({
border: false,
labelAlign: 'right',
labelWidth: 64,
frame: true,
layout: 'column',
fileUpload: true,
items: [{
columnWidth: 1,
layout: 'form',
items: [{
name: 'importFile',
xtype: 'textfield',
inputType: 'file',
fieldLabel: '文件'
}]
}]
});
var _win = new Ext.Window({
modal: true,
title: '数据导入',
width: 300,
height: 112,
layout: 'fit',
items: [_form],
buttons: [{
text: '上传',
handler: function(btn,E){
_upload();
}
},{
text: '关闭',
handler: function(btn, E){
_win.hide();
_win.destroy(true);
}
}]
});
_win.show();
};
只能使用标准input(type="file" 当然该标签的值对JS也是不访问的)标签, 由浏览器实现本地文件系统访问, 然后随包含input的form一同POST到服务器端, 在服务器端可以访问request里的stream.
Ext包装了文件上传功能, 通过修改form的target到隐藏IFrame实现伪异步, 从而保持Ext.Ajax的一致编程外观.
目前项目正在使用的前台代码(ExtJs 3.0), 提供参考:
function(loadData, scope, url){
//loadData 回调
//scope 回调方法的this对象
//url上传的服务器路径
var _upload = function(){
//var _head = _tab.form.getForm().getValues();
refUtilNS.waitBox(true, '正在上传文件, 请稍候...');
Ext.Ajax.request({
url: url ? url : '../common/fileImport.action',
method: 'POST',
//jsonData: {head: _head},
form: _form.getForm().id,
isUpload: true,
success: function(resp, ops){
refUtilNS.waitBox(false);
var obj = Ext.decode(resp.responseText);
if (obj.success){
loadData.call(scope, obj.data);
}else{
Ext.Msg.alert('错误', '导入文件失败: ' + obj.message);
}
_win.close();
},
failure: function(){
refUtilNS.waitBox(false);
Ext.Msg.alert('错误', '连接服务器失败!');
_win.close();
}
});
};
var _form = new Ext.form.FormPanel({
border: false,
labelAlign: 'right',
labelWidth: 64,
frame: true,
layout: 'column',
fileUpload: true,
items: [{
columnWidth: 1,
layout: 'form',
items: [{
name: 'importFile',
xtype: 'textfield',
inputType: 'file',
fieldLabel: '文件'
}]
}]
});
var _win = new Ext.Window({
modal: true,
title: '数据导入',
width: 300,
height: 112,
layout: 'fit',
items: [_form],
buttons: [{
text: '上传',
handler: function(btn,E){
_upload();
}
},{
text: '关闭',
handler: function(btn, E){
_win.hide();
_win.destroy(true);
}
}]
});
_win.show();
};
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询