extjs采用fileupload进行文件上传后台实现
前台js:
form:
Ext.define("GS.base.BasicImportForm",{
extend:"Ext.form.Panel",
alias:"widget.basicImportForm",
frame:true,
tbar:[],
layout:{
type:'table'
},
items:[{
xtype:'fileuploadfield',
fieldLabel:'文件信息',
name:'file',
labelWidth:60,
width:350,
allowbBlank:false,
msgTarget:'side',
buttonText:'选择文件'
}
]
});
controller:
"baseModelGrid button[ref=doc_upload]":{
click:function(){
var win =Ext.create('Ext.Window', {
height: 250,
width: 500,
layout: 'fit',
closeAction: 'hide',
maximizable: true, //是否可以最大化
minimizable: true, //是否可以最小化
resizable: true, //是否可以改变窗口大小
modal :true,//为真 当显示时,制作窗口模板并且掩饰他背后的一切
tbar:[
{xtype:"button",text:"上传",ref:"docupload",iconCls:"up",
listeners:{
'click':function(bt,e,eOpts){
var basicImportForm = bt.up("window").down("basicImportForm");
var formObj = basicImportForm.getForm();
var file=formObj.findField("file");
var str = file.getValue();
var filename=str;
str = str.substr(str.indexOf('.'),str.length - 1);
if("" == str || str==".exe") {
Ext.MessageBox.alert("提示","文件不能为空或者以.exe结尾!");
return;
};
if(!Ext.isEmpty(file.getValue())){
Ext.MessageBox.buttonText = {
ok : "确定",
cancel : "取消",
yes : "是",
no : "否"
};
Ext.MessageBox.confirm("系统提示","确定是否上传?",function(btn,txt){
if(btn == "yes"){
basicImportForm.submit({
url:'loadAction!upload.action',
params:{fileName:filename},
waitMsg:'正在上传....',
success:function(form,action){
var resObj = action.result;
if (resObj.success) {
Ext.Msg.alert("提示","上传成功");
win.hide();
}else{
Ext.Msg.alert("提示","上传失败");
}
},
failure:function(form, action){
Ext.Msg.alert("提示","上传失败");
}
});
}
});
}
}
}
}
],
items: [{ xtype: "basicImportForm"}]
}).show();
}
}
显示页面:
'-',{xtype:'button',text:'上传',ref:'doc_upload'}
java代码:
public class LoadAction extends BaseAction {
/**
* 序列号
*/
private static final long serialVersionUID = 1L;
//这个是用来写运行结果的信息的
private String msg;
//来返回信息给前台的因为这里继承了baseaction直接用了towrite没有用到,否则可以通过它进行信息的返回
private String contentType;
//这个file是从extjs的form中的对应的xtype=fileupload name=file来的,名字一定要相对应,不然无法获得文件
private File file;
//filename是从前台传过来的,也可以通过request得到然后自己拼接
private String fileName;
public void upload() throws Exception {
//文件上传保存的位置
String realPath = "E:\\" + fileName;
if (file.isFile()) {
//定义并初始化io流的读写操作
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(file));
BufferedOutputStream bos = null;
try {
bos = new BufferedOutputStream(new FileOutputStream(realPath));// 为以防万一,写文件的路径尽量写成正双斜杠的
// 从源文件中取数据,写到目标文件中
byte[] buff = new byte[8192];
for (int len = -1; (len = bis.read(buff)) != -1;) {
bos.write(buff, 0, len);
}
bos.flush();
} catch (IOException ie) {
ie.printStackTrace();
toWrite(jsonBuilder.returnFailureJson("'文件上传失败'"));
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
if (bos != null) {
try {
bos.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
}
}
toWrite(jsonBuilder.returnSuccessJson("'文件上传成功'"));
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
// since we are using <s:file name="upload" .../> the file name will be
// obtained through getter/setter of <file-tag-name>FileName
public String getUploadFileName() {
return fileName;
}
public void setUploadFileName(String fileName) {
this.fileName = fileName;
}
// since we are using <s:file name="upload" ... /> the content type will be
// obtained through getter/setter of <file-tag-name>ContentType
public String getUploadContentType() {
return contentType;
}
public void setUploadContentType(String contentType) {
this.contentType = contentType;
}
// since we are using <s:file name="upload" ... /> the File itself will be
// obtained through getter/setter of <file-tag-name>
public File getUpload() {
return file;
}
public void setUpload(File file) {
this.file = file;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
}
extjs采用fileupload进行文件上传后台实现的更多相关文章
- zt对于C#中的FileUpload解决文件上传大小限制的问题设置
对于C#中的FileUpload解决文件上传大小限制的问题设置 您可能没意识到,但对于可以使用该技术上载的文件的大小存在限制.默认情况下,使用 FileUpload 控件上载到服务器的文件最大为 4M ...
- 使用fileupload实现文件上传
一. fileupload组件工作原理 先来张图片, 帮助大家理解 fileupload核心API 1. DiskFileItemFactory构造器1) DiskFileItemFactory() ...
- SpringMvc 文件上传后台处理
springMVC后台参数是通过MultipartFile类来转化Request的文件上传,但需要apache下fileupload的jar包做支持. 在springMVC的dispatcher-co ...
- zk FileUpload(文件上传)
<button label="上传 Image" upload="true,maxsize=1073741824"> <attribute n ...
- asp.net web常用控件FileUpload(文件上传控件)
FileUpload控件的主要中能:向指定目录上传文件,该控件包括一个文本框和一个浏览按钮. 常用的属性:FileBytes,FileContent.FileName.HasFile.PostedFi ...
- Apache Commons fileUpload实现文件上传之一
需要两个jar包: commons-fileupload.jar Commons IO的jar包(本文使用commons-io-2.4.jar) 利用Servlet来实现文件上传. package ...
- Spring MVC使用commons fileupload实现文件上传功能
通过Maven建立Spring MVC项目,引入了Spring相关jar依赖. 1.为了使用commons fileupload组件,需要在pom.xml中添加依赖: <properties&g ...
- Apache Commons FileUpload 实现文件上传
Commons FileUpload简介 Apache Commons是一个专注于可重用Java组件开发的 Apache 项目.Apache Commons项目由三个部分组成: 1.Commons P ...
- 实用ExtJS教程100例-009:ExtJS Form无刷新文件上传
文件上传在Web程序开发中必不可少,ExtJS Form中有一个filefield字段,用来选择文件并上传.今天我们来演示一下如何通过filefield实现ExtJS Form无刷新的文件上传. 首先 ...
随机推荐
- OSPF虚链路配置.示例2
先看一个拓扑图 黄色区域是area0,即骨干区域,如果如图示RT1与RT6之间的链路断了,那么会出现骨干区域被“分裂”的情况,很明显骨干区域是不能被分割开的,出现这种状况的时候可能会影响到整个自制系统 ...
- getGuid()
function GetGUID: string;var LTep: TGUID;begin CreateGUID(LTep); Result := GUIDToString(LTep); R ...
- 未能加载文件或程序集“Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342”或它的某一个依赖项。 解决方法
webconfig文件对于oracle的映射错误.需要在以下位置修改 <runtime> <legacyCorruptedStateExceptionsPolicy enabled= ...
- UITextFiled,UIButton,UIImageView交互相互之间的事件拦截
UIButton右上方添加一个笑button如: UIButton *button =[UIButton buttonWithType:UIButtonTypeCustom]; button.f ...
- mysql max_allowed_packet错误
mysql错误 max_allowed_packet 查看目前配置 show VARIABLES like '%max_allowed_packet%'; 修改: set global max_all ...
- 错误"因为数据库正在使用,所以无法获得对数据库的独占访问权"的解决方案
今天在还原数据库的时候,提示"因为数据库正在使用,所以无法获得对数据库的独占访问权",无论我是重启数据库,还是重启计算机,都不能解决问题,多番尝试后,终于解决了该问题.现将引发该问 ...
- spring含参数 环绕通知demo
题目:有一个懂得读心术的人需要完成两件事情:截听志愿者的内心感应和显示他们在想什么 <?xml version="1.0" encoding="UTF-8" ...
- web前端—工作周报
2016.07.25-2016.07.29周报: 1.本周工作主要内容: A:完成了宏视云h5播放器升级及大数据上报: B:修复xk-h5播放器bug:在三星手机自带浏览器无法进行滑动seek; C ...
- SAE/ISO standards for Automotive
On-Board Diagnostics J1962 Diagnostic Connector Equivalent to ISO/DIS 15031-3: December 14, 2001J201 ...
- hihocoder #1178 : 计数 暴力
#1178 : 计数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://hihocoder.com/problemset/problem/1178 ...