`

Ext实现文件上传

阅读更多
Ext实现文件上传
最近在项目开发中用到Ext文件上传,在网上找到很多例子,不过大多数例子FormPanel中只包括一个文件上传的组件,表单中并没有包括其它内容,现在分享下包括其它内容的例子,具体步骤如下:
导入包:commons-fileupload.jar commons-io-1.3.2.jar
1、首先在页面中必须将表单设置为:fileUpload:true
   文件选择组件使用:xtype : "fileuploadfield"
frm = new Ext.form.FormPanel({
buttonAlign : 'center',
labelAlign : 'right',
labelWidth : 100,
autoHeight : true,
frame : true,
bodyStyle : 'padding:8px 0 0 0;',
fileUpload : true,// 进行文件上传时必须执行
/*
* defaults: {
*
* allowBlank: false, msgTarget: 'side' },
*/
items : {
columnWidth : .50,
layout : 'column',
items:[{
columnWidth : .85,
layout : 'form',
items : [{
name : "title",
xtype : "textfield",
fieldLabel : "标题",
allowBlank : false,
blankText : "标题不可以为空!",
width : 260
}, {
name : 'content',
xtype : "textarea",
fieldLabel : "内容",
allowBlank : false,
height : 80,
blankText : "内容不可以为空!",
width : 260
}, {
name : 'receivername',
xtype : "textarea",
fieldLabel : "接收人",
height : 80,
width : 260,
//listeners : {
// 'focus' : {
// fn : function(field) {
// win2.show(this);
// }
// }
//},
allowBlank : false,
blankText : "接收人不可以为空!",
scope : this

}, {
xtype : 'textfield',
name : 'receivercode',
id : 'receivercode',
hidden : true,
hideLabel : true
}, {
name : 'appendfile',
xtype : "fileuploadfield",
fieldLabel : "附件",
emptyText : '请选择上传文件',
width : 260
}, {
name : 'remark',
xtype : "textarea",
fieldLabel : "备注",
allowBlank : false,
blankText : "备注不可以为空!",
height : 80,
width : 260
      }]
},{
columnWidth : .15,
layout : 'form',
items : [{
},{
},{
},{
},{
},{
},{
},{
},{
},{
},{
name : 'puritem',
xtype : "button",
text:'选择...',  
handler:function(){
win2.show(this);
},
labelWidth : 300
}]
}]
},
buttons : [{
text : '发送',
handler : submit

}, {
text : '保存',
handler : submitsave
}, {
text : '关闭',
handler : function() {
win.hide();
}

}]

});
2、在后台Action中提取页面数据,需要注意如果现在从request中提取页面数据,这个时候是提取不到数据的,页面中加入了fileUpload:true后,从request中就提取不到数据,需要经过中间一个类进行操作。
中间类:
package com.wfzcx.fasp.sys.message.control;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UpLoadFile {
static UpLoadFile up=new UpLoadFile();
public static UpLoadFile getUpLoadFile() {

return up;
}
public List readRequestInputStream(HttpServletRequest request,long sizeMax) {
DiskFileItemFactory factory=new DiskFileItemFactory();  
ServletFileUpload fu=new ServletFileUpload(factory);
//factory.setSizeThreshold(1024*1024*30);
fu.setSizeMax(sizeMax);
FileItem fi;

List list=new ArrayList();
try {

List list2=fu.parseRequest(request);
uploadList udata=new uploadList();

//for (Object object : list2) {
for(int i=0;i<list2.size();i++){
fi = (FileItem)list2.get(i) ;

String name=fi.getName();
if(name!=null&&fi.getContentType()!=null) {
int index=name.lastIndexOf('\\');
index=index==-1?name.lastIndexOf('/'):index;
    if(index!=-1)
    name=name.substring(index+1);
    udata.setInput(fi.getInputStream());
    udata.setFilesize(fi.getSize());
    udata.setFiletype(fi.getContentType());
    udata.setFileName(name);
list.add(udata);
}else {
udata.put(fi.getFieldName(), fi.getString());

}
}

return list;

} catch (FileUploadException e) {

e.printStackTrace();
} catch (IOException e) {

e.printStackTrace();
}
return null;
}

public boolean upLoadFile(HttpServletRequest request,long sizeMax,String filepath) {
List list= readRequestInputStream(request, sizeMax);
boolean pand =false;
//for (uploadList stream : list) {
for(int i=0;i<list.size();i++){
uploadList stream = new uploadList();
stream = (uploadList) list.get(i);
pand=writeFile(stream.getInput(), filepath+stream.getFileName());
}
return pand;

}

boolean writeFile(InputStream stream,String filepath){
if(stream==null||filepath==null)
return false;

      try {

          OutputStream bos = new FileOutputStream(filepath);
        
          int bytesRead = 0;
          byte[] buffer = new byte[1024];
          while ( (bytesRead = stream.read(buffer, 0, 1024)) != -1) {
            bos.write(buffer, 0, bytesRead);
          }
          bos.close();
          stream.close();
          return true;
        }catch(Exception e){
          System.err.print(e);
              return false;
        }


}
public class uploadList{
HashMap mapvalue=new HashMap();
public uploadList() {}
public void put(String key,String value) {
mapvalue.put(key, value);
}
public String getmap(String key) {
return (String) mapvalue.get(key);

}
InputStream input=null;
String fileName=null;
long filesize=0l;
String filetype="";
    public uploadList(InputStream input,String fileName,long filesize,String filetype){
this.input = input;
this.fileName = fileName;
this.filesize = filesize;
this.filetype = filetype;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public InputStream getInput() {
return input;
}
public void setInput(InputStream input) {
this.input = input;
}
public long getFilesize() {
return filesize;
}
public void setFilesize(long filesize) {
this.filesize = filesize;
}
public String getFiletype() {
return filetype;
}
public void setFiletype(String filetype) {
this.filetype = filetype;
}
}


}
后台Action:
public class MessageController extends MultiActionController {
public ModelAndView addSaveMessage(HttpServletRequest request,
HttpServletResponse response) {
List filedatas = UpLoadFile.getUpLoadFile().readRequestInputStream(
request, 1024 * 1024 * 500);
uploadList udata = (uploadList) filedatas.get(0);
String title = udata.getmap("title");
String content = udata.getmap("content");
String receivercode = udata.getmap("receivercode");
String receivername = udata.getmap("receivername");
String remark = udata.getmap("remark");
InputStream file = udata.getInput();//上传的文件流
System.out.println("文件名:" + udata.getFileName());
System.out.println("文件大小:" + udata.getFilesize());
System.out.println("文件类型:" + udata.getFiletype());
}


}
3、可以根据业务需求进行数据库操作。
注意在使用本方法的时候可能会出现乱码现象。
分享到:
评论

相关推荐

    Ext 实现 文件上传 进度显示

    `Ext`是一个流行的JavaScript框架,用于构建富客户端应用程序,而实现文件上传进度显示则为用户提供更好的用户体验。本篇文章将详细探讨如何利用`Ext`来实现文件上传的进度显示,并结合`commons-fileupload`库进行...

    ext实现文件上传 后台java实现

    本文将详细介绍EXTJS如何实现文件上传,以及后台Java如何与之配合。 EXTJS中的文件上传主要依赖于`Ext.form.Panel`中的`FileField`组件,它模拟了一个HTML的`&lt;input type="file"&gt;`元素,允许用户选择本地文件。`...

    Ext3.0实现多文件上传.rar

    在“Ext3.0实现多文件上传.rar”这个压缩包中,我们聚焦于一个特定的功能:使用Ext3.0来实现实时的多文件上传功能。这个功能通常在网页应用中用于让用户能够一次性上传多个文件,如图片、文档等,极大地提高了用户...

    Ext上传文件例子(入门)

    本篇文章将聚焦于"Ext上传文件例子(入门)",通过一个简单的实例来讲解如何在ExtJS框架下实现文件上传功能。 首先,我们要理解文件上传的基本原理。在Web应用中,文件上传通常依赖于HTML的`&lt;input type="file"&gt;`元素...

    ext上传文件

    如果能够访问这些文件,我们可以更具体地了解EXTJS如何实现文件上传,包括可能的配置选项和自定义行为。 总的来说,EXTJS的文件上传功能是通过其强大的组件模型和异步通信机制实现的,它为开发者提供了便捷的前端...

    ext4.0 多文件上传

    标题"ext4.0 多文件上传"指的是在ext4.0文件系统中实现的多文件同时上传功能。ext4.0是Linux操作系统中的一个高级文件系统,它在ext3的基础上进行了优化,提高了性能并支持更大的文件系统容量。多文件上传则是指用户...

    EXT文件批量上传源代码

    2. **AJAX异步上传**:EXT利用XMLHttpRequest对象实现文件的异步上传,通过POST方式将文件数据发送到服务器,这样可以避免页面刷新,提高用户体验。 3. **多文件选择**:通过HTML5的`&lt;input type="file" multiple&gt;`...

    Ext上传文件 Demo

    本示例“Ext上传文件 Demo”聚焦于如何使用Ext JavaScript库与ASP.NET后端相结合来实现文件上传。下面将详细阐述相关知识点。 首先,Ext是一个强大的JavaScript框架,用于构建富客户端应用程序。它提供了丰富的组件...

    Ext2.0 文件上传组件

    - Flash/Silverlight fallback:对于不支持HTML5的旧版浏览器,组件可能依赖Flash或Silverlight插件实现文件上传功能。 - XHR(XMLHttpRequest)或Fetch API:使用现代浏览器支持的API进行AJAX上传,确保无刷新...

    Ext相册实现文件拖拽,实时上传进度,本地预览

    4. **上传文件**:EXT4的FormPanel可以方便地处理文件上传,通过设置`enctype="multipart/form-data"`,结合Ajax请求,可以实现异步上传。 **实时上传进度** 1. **使用FormData对象**:HTML5的FormData对象允许我们...

    ext多文件上传

    首先,EXTJS中的`Ext.form.Panel`组件是实现多文件上传的基础。我们需要创建一个包含`Ext.form.FileField`的表单,这是EXTJS中用于处理文件输入的组件。在`FileField`中,我们可以通过设置`multiple`属性为`true`来...

    Ext 文件上传参考文档

    1. **表单组件(Form Panel)**:ExtJS的表单组件是实现文件上传的基础。通过创建一个包含`file`类型输入字段的表单,用户可以选择本地文件进行上传。这个输入字段的`inputType`属性应设置为`'file'`。 2. **表单...

    Ext.net+swfupload实现文件上传

    Ext.net中上传控件在文件上传到服务器后在判断后缀、大小是否符合要求,这样在网速限制的情况下用户体验非常糟糕,往往等很长时间后得到“上传文件过大”的错误。本组件在客户端判断文件大小、类型,有效避免了上述...

    Ext多文件上传

    "Ext多文件上传"通常指的是使用ExtJS库实现的批量或同时上传多个文件的功能。 在实现多文件上传时,我们需要考虑以下几个核心知识点: 1. **表单提交**:在HTML中,表单通常用于收集用户数据并将其发送到服务器。...

    EXT 3.0 文件上传对话框

    总的来说,EXT3.0 文件上传对话框是一个强大且灵活的工具,能够帮助开发者在EXT3应用中实现高效、友好的文件上传功能。结合适当的文档和样式配置,可以轻松地将其集成到任何项目中,提升用户交互体验。

    Ext 文件上传的完整列子

    本示例将详细介绍如何在ExtJS环境中实现文件上传功能,以帮助开发者更好地理解和应用。 首先,我们需要了解ExtJS中的FileField组件。FileField是ExtJS提供的一个表单字段,用于处理用户选择本地文件的交互。创建...

    Ext上传文件控件

    在给定的"Ext上传文件控件"中,我们关注的是ExtJS如何处理文件上传的功能。ExtJS 提供了一个名为`Ext.form.FileField`(也称为`Ext.form.field.File`)的组件,允许用户在Web表单中选择和上传文件。这个控件通常与`...

    Ext 文件上传demo

    EXT文件上传Demo是一个基于EXT库实现的交互式文件上传示例。EXT是一个强大的JavaScript库,专为构建富互联网应用程序(RIA)而设计。它提供了丰富的组件库,包括表格、面板、菜单、表单等,以及复杂的布局管理和数据...

    ext上传组件,可以多文件上传

    swfupload_f9.swf和swfupload_f8.swf是SwfUpload组件的Flash文件,它们是实现文件上传功能的关键。Flash技术允许在浏览器中运行丰富的媒体内容和交互,尽管现代浏览器对Flash的支持逐渐减少,但在过去,它是实现跨...

    ext 文件上传

    通过学习这些知识点,开发者可以更好地理解和使用EXTJS实现文件上传功能,提高用户体验并确保上传过程的稳定性和可靠性。对于实际项目开发来说,这是一项至关重要的技能,特别是对于那些需要处理大量用户生成内容的...

Global site tag (gtag.js) - Google Analytics