版权声明:本文为博主原创文章。未经博主同意不得转载。 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',
width: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>

struts2+extjs文件上传完整实现(攻克了上传中的各种问题)的更多相关文章

  1. Struts2 + uploadify 多文件上传完整的例子!

    首先,我这里使用的是  Jquery  Uploadify3.2版本号  导入相关的CSS  JS    <link rel="stylesheet" type=" ...

  2. Struts2入门(七)——Struts2的文件上传和下载

    一.前言 在之前的随笔之中,我们已经了解Java通过上传组件来实现上传和下载,这次我们来了解Struts2的上传和下载. 注意:文件上传时,我们需要将表单提交方式设置为"POST" ...

  3. struts2实现文件上传(多文件上传)及下载

    一.要实现文件上传,需在项目中添加两个jar文件 二.上传准备的页面 注:必须植入enctype="multipart/form-data"属性,以及提交方式要设置成post &l ...

  4. struts2的文件上传

    在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来 ...

  5. Struts2之文件上传下载

    本篇文章主要介绍如何利用struts2进行文件的上传及下载,同时给出我在编写同时所遇到的一些问题的解决方案. 文件上传 前端页面 <!-- 引入struts标签 --> <%@tag ...

  6. struts2实现文件上传、多文件上传和文件下载

    总结的两个问题,就是struts2上传下载的时候对属性名配置要求非常严格: 第一:上传的时候 private File file; private String fileContentType; pr ...

  7. Struts2+Uploadify文件上传使用详解

    Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.不过官方提供的实例是php版本的,本文将详细介绍Uploadify在java中的使用,您也可以点击下面的链接进行演示或下 ...

  8. Struts2 文件上传,下载,删除

    本文介绍了: 1.基于表单的文件上传 2.Struts 2 的文件下载 3.Struts2.文件上传 4.使用FileInputStream FileOutputStream文件流来上传 5.使用Fi ...

  9. Struts2 多文件上传

    Struts2多文件上传只需要将 单文件上传中的File变成File[]  即可,上篇文章:单文件上传 <form action="${pageContext.request.cont ...

随机推荐

  1. git push的一些坑

    在安装git的时候我们一般会自己设置一个用户名和邮箱,这个一般设置为全局的用户名,如下所示 git config --global user.name "xxx" git conf ...

  2. Android四层架构

    Andrid系统的体系结构设计为多层结构,这种结构在给用户提供安全保护的同时还保持了开放平台的灵活性.如下图所示:   Google官方提供的Android系统的四层架构图 从上到下进行简单介绍: 一 ...

  3. 第十八章:自定义splash screen、app icon和tab icon

    本文介绍如何自定义splash screen.app icon和tab icon. 1. 自定义splash screen和app icon 1.1 产生resources文件夹,启动命令行: ion ...

  4. 关于Json字符串"反序列化Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path..."

    描述的很清楚就是说给它的不是一个对象,而是一个数组,所以他在建议你用JArray去解析,但是你明明就是给它的一个对象,并不是一个数组 这是我下意识的去把我的json字符串中的"[ ]&quo ...

  5. MySQL之基本语句

    SQL是Structure Query language(结构化查询语言)的缩写,它是使用关系模型的数据库应用语言.在众多开源数据库中,MySQL正是其中最杰出的代表,MySQL是由三个瑞典人于20世 ...

  6. ThinkPHP3.2 整合支付宝RSA加密方式

    RSA核心加密验证算法 <?php /** * RSA签名 * @param $data 待签名数据 * @param $private_key 商户私钥字符串 * return 签名结果 */ ...

  7. 8、列表:ion-list

    1.基本样式 no-lines 属性 隐藏列表项之间的分割符 inset 属性 去掉 ion-list的 外边框. 默认 的 ion-list 是有外边框的.   /* ---示例代码----*/ & ...

  8. VS2015自定义类模板的方法

    在前一段时间忽然想给自己电脑上的vs新建类的时候添加一个自定义个注释,但是在网上搜了很久都是说vs2012之类的方法系统也都是win7.XP之类的独独没有win8的.故此自己不断的尝试修改发现方法如下 ...

  9. hdu 1513 添最少字回文 (Lcs 滚动数组)

    http://blog.csdn.net/ice_crazy/article/details/8244639 这里5000*5000超出内存,所以需要用滚动数组: 用一个now表示当前的结果,pre表 ...

  10. C#简单实现读取txt文本文件并分页存储到数组

    最近做一个VR项目,需要把某个中草药的介绍信息分页显示到unity场景里然后用VR手柄切换信息. unity的脚本是c#,就先在本地写了个代码测试了一下,利用控制台测试输出,到时候拷贝函数过去再结合交 ...