欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Ext +Struts2 的文件上传

程序员文章站 2022-07-15 10:19:00
...
    反正 搞 EXT 很久了。 说 文件上传也很久了。  原来去 EXT 的论坛找了个 现成的组件,也很方便。 不过感觉 不适合小的需求。对用户来说,操作也不是很直观。
    这回有时间,搞搞上传了。 去找了个半成品,改改还是OK 了。。。
    先看图片吧。
Ext +Struts2 的文件上传
            
    
    博客分类: java+ext EXTjsonXMLthreadHTML 
     上传文件 的 textfield ,添加了一个鼠标焦点事件。 点击的话,弹出上传窗口。

Ext +Struts2 的文件上传
            
    
    博客分类: java+ext EXTjsonXMLthreadHTML 

      剩下就是上传文件的过程了, 用struts2 自带的上传组件。

Ext +Struts2 的文件上传
            
    
    博客分类: java+ext EXTjsonXMLthreadHTML 


贴贴关键代码吧:

	
	logger.debug("++++++++"+uploadFileName);
	
	
	if   (uploadFileName.getBytes().length   !=   uploadFileName.length())   {  
	    uploadFileName=System.currentTimeMillis()+"";
	}  
	
	
	
	
	this.savePath =Thread.currentThread().getContextClassLoader().getResource("").getPath();  
	

	savePath=savePath.substring(1, savePath.length()-16)+uploadFileName;
	
	logger.debug(savePath);
	
	File newPath = new File(savePath); 

	Tools.CopyFile(upload,newPath);
	
	
	 this.responseWrite("{\"success\":true,\"msgs\":'" +uploadFileName+ "'}");  
	 
	 logger.debug("{\"success\":true,\"msg\":\"" +uploadFileName+ "\"}");
	
	
	return null;
    


在界面中,我们可以获取到 File 对象和上传的文件名称。 然后,就是你根据上传的的文件进行整理了。当然,这里还能根据 文件后缀进行过滤, 暂时没这样的要求,就没写判断。这里判断了一下中文文件名称。

      要注意的是, struts2上传文件大小, 拦截器默认的是 2M 左右。 如果需要的话,可以自己在 sturts.xml 里面修改。
     
    <constant name= "struts.multipart.maxSize" value="10242880"></constant> 


       前台界面,也没什么难度,都是很简单的控件,当然,我是抄袭别人的了(懒的快发霉了,不想发明*)。
       主要的也就是这么一段:

      
var formUpload = new Ext.form.FormPanel({   
  
    baseCls: 'x-plain',   
  
    labelWidth: 80,   
  
    fileUpload:true,   
  
    defaultType: 'textfield',   
  
    items: [{   
  
      xtype: 'textfield',   
  
      fieldLabel: '文 件',   
  
      name: 'upload',   
  
      inputType: 'file',   
  
      allowBlank: false,   
  
      blankText: '请上传文件',   
  
      anchor: '90%'  
  
    }]   
  
  });   
  


在这个过程中,发现一个奇怪的问题。就是上传完成以后,返回的json..
this.responseWrite("{\"success\":true,\"msgs\":'" +uploadFileName+ "'}"); 
代码里面就这样写的, 可是通过调试,前台多了一个 <per> 标签。 json一直报错,郁闷的很,后来 把这个东西给过滤了,还不知道为什么产生这个东西。

代码整理好了就发上来。。