关于GWT的文件上传网上有封装比较好的例子 大家可以搜索:gwtextux。
gwtextux是基于GWT-EXT开发的。本文写的是针对GXT组件开发的文件上传例子。
GXT 文件上传主要分五步:
第一步,设置Form的提交属性
// 选择上传路径 form
FormPanel formPanel = new FormPanel ();
// 设置form参数MULTIPART
formPanel.setEncoding (FormPanel.Encoding.MULTIPART);
// 设置提交方式POST
formPanel.setMethod (FormPanel.Method.POST);
// 设置上传请求地址
formPanel.setAction ("fileupload.do");
第二步:添加上传组件
// 文件选择
FileUploadField fileUploadField = new FileUploadField ();
fileUploadField.setFieldLabel ("请选择上传文件");
fileUploadField.setName ("file");
第三步:提交按钮
Button button = new Button ("上传");
button.addListener (Events.OnClick, new Listener <BaseEvent> ()
{
@Override
public void handleEvent (BaseEvent be)
{
formPanel.submit ();
}
第四步:后台接受上传流的Servlet
public void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
// 获取上传句柄
ServletFileUpload upload = new ServletFileUpload ();
FileItemIterator iter;
HttpSession session = request.getSession ();
// 获取文件长度
String fileSizeString = request.getHeader ("Content-Length");
//将文件长度转化为数字
String sourceidString = null;
try
{
// 从request中获取参数
iter = upload.getItemIterator (request);
while (iter.hasNext ())
{
FileItemStream item = iter.next ();
// 资源名称
if (TermStrings.SOURCE_FILED.equals (item.getFieldName ()))
{
InputStream stream = item.openStream ();
sourceidString = Streams.asString (stream, "utf-8");
}
// 获取文件输入流
if ("file".equals (item.getFieldName ()))
{
// 获得系统时间
BufferedInputStream bin = new BufferedInputStream (item.openStream ());
// 获得文件路径
String filePath = getServletContext ().getRealPath ("后台存储文件.xls");
File file = new File (filePath);
// 创建写文件的流
BufferedOutputStream bout = new BufferedOutputStream (new FileOutputStream (file));
byte[] b = new byte[8 * 1024];
int i = bin.read (b);
while (i > 0)
{
//写入文件
bout.write (b, 0, i);
i = bin.read (b);
}
bout.flush ();
bout.close ();
第五步:web.xml
<servlet-mapping>
<servlet-name>FileUpload</servlet-name>
<url-pattern>/fileupload.do</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>FileUpload</servlet-name>
<servlet-class>net.carefx.term.server.servlet.FileUpload</servlet-class>
</servlet>
如果要实现读取进度,我的做法是时间轮训,通过后台获取文件长度:
String fileSizeString = request.getHeader ("Content-Length");
总长度,然后根据文件写入流的写入次数判断写入的百分比。将此数据在前台显示。
文件上传需要使用第三方jar包
commons-fileupload-1.2.1.jar
分享到:
相关推荐
gwt 文件上传 gxt文件上传
该存储库包含反编译的GXT文件和它们的编译器。 运行build_[game]_[platform].bat为您想要的游戏快速构建 GXT。 反编译的 GXT 使用原始源的语法将 GXT 文件反编译为 TXT。 字符串大多按照它们在原始源文件中的顺序...
这是GTA4里的源文件american.gxt
ext推出的java版UI
gxt是ext使用gwt api开发的一套东东。比使用原始gwt开发是要轻松一些的。
GXT 学习的好书, 帮助你尽快进入GXT.
GXT Cascade ComboBox Samples
gxt初学进阶教程,教你一步一步使用gxt,容易上手,例子很详细
贡献一个GXT项目给大家,希望对大家有所帮助!
浪曦原创]GXT系列+第1讲+GXT_GWT的安装.
gxt-api-2.2.1帮助文档 。
GXT 下拉树(Combo Tree)基本实现GXT 下拉树(Combo Tree)基本实现GXT 下拉树(Combo Tree)基本实现GXT 下拉树(Combo Tree)基本实现GXT 下拉树(Combo Tree)基本实现GXT 下拉树(Combo Tree)基本实现GXT 下拉树(Combo ...
extjs gwt gxt 学习资源 ajax技术
gxt-api-2.2.5 sdk doc 即ext-gwt api doc
GWT,GXT的JAR包以及源代码,需要的朋友可以下载。 谷歌推出的WebUI的JAVA的库。谢谢大家下载
一步一步教你新建GXT(EXT-GWT)项目
本资源是目前的最新版本(9/15/11) gxt的工具非常之少,在CSDN还有一个gxt-2.1.1(2/2/2010)链接就不提供了,大家根据需要选择下载。
gxt.jar
GXT2.2.4 GXT2.2.4 GXT2.2.4GXT2.2.4 GXT2.2.4 GXT2.2.4GXT2.2.4 GXT2.2.4 GXT2.2.4GXT2.2.4 GXT2.2.4 GXT2.2.4GXT2.2.4 GXT2.2.4 GXT2.2.4 jar
这个是官方的英文帮助,对大家开发有帮助。里面描述所有gxt 的类的用法