zoukankan      html  css  js  c++  java
  • struts2+extjs文件上传完整实现(攻克了上传中的各种问题)

    版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/shanhuhau/article/details/28617999

    首先须要引入上传控件

    <script type="text/javascript" src="<%=basePath%>/js/ext/examples/ux/fileuploadfield/FileUploadField.js" charset="utf-8"></script>

    弹出上传框相应extjs代码

    
    var uploadForm=new Ext.FormPanel({
    	id:'uploadForm',
    	520,
    	frame:true,
    	fileUpload: true,  
    	autoHeight:true,
    	bodyStyle:'10px 10px 0px 10px',
    	labelWidth:50,
    	enctype: 'multipart/form-data', 
    	defaults:{
    		anchor: '95%',
            allowBlank: false
    	},
    	items:[
    		{
    			xtype:'fileuploadfield',
    			emptyText: '请选择上传文件...', 
                fieldLabel: '文件:', 
                id:'uploadFile',
                name: 'upload', 
                allowBlank: false,   
                blankText: '文件名不能为空.',   
                 buttonCfg: {
    	    				text: '选择...'// 上传文件时的本地查找按钮
    	          }
    		}
    	],
    	buttons: [{
    	                text: '上传',
    	                handler: function(){
    	                    if(uploadForm.getForm().isValid()){
    	                    	uploadForm.getForm().submit({
    	    	                    url:basePath+ '/documentManage/upload_upload.action',
    	    	                    method:'POST',
    	    					    waitTitle: '请稍后',
    	    	                    waitMsg: '正在上传文档文件 ...',
    	    						success: function(fp, action){
    	    	                	  	Ext.MessageBox.alert('信息', action.result.msg);  
    	    	                        Ext.getCmp("uploadFile").reset();          // 指定文件字段的id清空其内容
    	    	                        addwin.hide();
    									grid.store.load({params:{start : 0,limit : combo.value}});
    	    	                    },
    	    						failure: function(fp, action){
    	    	                        Ext.MessageBox.alert('警告', action.result.msg);  
    	    	                        addwin.hide();
    	    	                    }
    	     	                });
    	                    }
    	                }
    	            },{
    	                text: '重置',
    	                handler: function(){
    	            		uploadForm.getForm().reset();
    	                }
    	            }]
    	
    });
    
    addwin = new Ext.Window({
    	title : '上传新文档',
    	closable : true,
    	width : 520,
    	autoHeight: true,
    	border : false,
    	plain : true,
    	modal : true,
    	layout : 'fit',
    	bodyStyle : 'padding:5px;',
    	maximizable : false,// 禁止最大化
    	closeAction : 'hide',
    	closable : true,// 是否有关闭
    	collapsible : true,// 可折叠
    	iconCls : 'bind',
    	items : [uploadForm]
    });




    struts2 action代码

    package cn.com.action;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.struts2.ServletActionContext;
    
    import cn.com.css.common.action.BaseAction;
    
    
    public class FileUploadAction extends BaseAction {
    
    	private static final long serialVersionUID = 5156288255337069381L;
    
    	private  String msg;
    	private String contentType;
    	private File docmentFile;
    	private String fileName;
    
    
    	public String upload() throws Exception {
    		String realPath = "E:\" + fileName;
    		if (docmentFile.isFile()) {
    			BufferedInputStream bis = new BufferedInputStream(
    					new FileInputStream(docmentFile));
    			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();
    				msg="文件上传失败";
    				HttpServletResponse response = ServletActionContext.getResponse();
    				response.setContentType("text/html;charset=UTF-8");
    				return "none";
    			} finally {
    				if (bis != null) {
    					try {
    						bis.close();
    					} catch (IOException ie) {
    						ie.printStackTrace();
    					}
    				}
    				if (bos != null) {
    					try {
    						bos.close();
    					} catch (IOException ie) {
    						ie.printStackTrace();
    					}
    				}
    			}
    		}
    		msg="文件上传成功";
    		HttpServletResponse response = ServletActionContext.getResponse();
    		response.setContentType("text/html;charset=UTF-8");
    		return "none";
    	}
    
    	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 docmentFile;
    	}
    
    	public void setUpload(File docmentFile) {
    		this.docmentFile = docmentFile;
    	}
    
    	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 getDocmentFile() {
    		return docmentFile;
    	}
    
    	public void setDocmentFile(File docmentFile) {
    		this.docmentFile = docmentFile;
    	}
    	
    }
    



    struts.xml配置:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
            "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
    	<package name="documentManage" namespace="/documentManage"
    		extends="global-struts-default">
    		
    		<action name="upload_*"
    			class="cn.com.FileUploadAction"
    			method="{1}">
    			<result type="json" name="none">
    				<param name="contentType">text/html;charset=utf-8</param>
    				<param name="excludeProperties">
    				    user.myQuestionses,user.messages,user.myNotes,user.taskPapers,
    				    user.tasks,user.testPapers,user.articles
      				</param>
    			</result>
    		</action>
    	</package>
    </struts>



  • 相关阅读:
    R语言与医学统计图形-【25】ggplot图形分面
    R语言与医学统计图形-【21】ggplot2标题
    R语言与医学统计图形-【24】ggplot位置调整函数
    R语言与医学统计图形-【23】ggplot2坐标系转换函数
    R语言与医学统计图形-【22】ggplot2统计变换函数
    R语言与医学统计图形-【20】ggplot2图例
    Android开发教程
    寒假来临,开启脚本语言的学习
    汇编语言学习资料
    SORT函数的使用方法(转载)
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10619014.html
Copyright © 2011-2022 走看看