-
extjs4 文件上传 空指针异常5
js代码:
var formPanel = Ext.create('Ext.form.Panel', {
title : '基本信息->编辑',
bodyStyle : 'padding: 0px 0px 0 0px; '
//width : 500,
margin: '0 0 0 0',
fileUpload: true,
frame: true,
autoHeight: true,
items : [
{
xtype:'filefield',
emptyText: '请选择一张图片',
fieldLabel : '照片附件',
buttonText:"浏览",
name : 'file'
}]
});
action代码:
public byte[] getBytesFromFile(File file) throws IOException{
InputStream is = new FileInputStream(file);
// 获取文件大小
long length = file.length();
if (length > Integer.MAX_VALUE) {
// 文件太大,无法读取
throw new IOException("File is large"+file.getName());
}
// 创建一个数据来保存文件数据
byte[] bytes = new byte[(int)length];
// 读取数据到byte数组中
int offset = 0;
int numRead = 0;
while (offset < bytes.length&& (numRead=is.read(bytes, offset,bytes.length-offset)) >= 0) {
offset += numRead;
}
// 确保所有数据均被读取
if (offset < bytes.length) {
throw new IOException("Could not completely read file"+file.getName());
}
is.close();
return bytes;
}2013年4月10日 15:08
3个答案 按时间排序 按投票排序
-
您好,
xtype:'filefield', ExtJS的file组件在前台显示的是一个假的路径,传递给后台的是一个二进制流,无API,后台读取需要自己实现,建议你用xtype:'textfiled'例子如下:
var resForm = new Ext.FormPanel({ xtype:'form', frame:true, fileUpload : true, border:false, items: [{ xtype:'textfield', fieldLabel:"选择导入文件", inputType : 'file', name:'batch1', labelWidth: 18 } ] }); //上传用resForm.getForm().submit
2013年4月11日 10:30
-
我觉得最好的方法是看extjs4官方的demo
http://docs.sencha.com/ext-js/4-2/extjs-build/examples/form/file-upload.html2013年4月10日 21:21
-
你接收文件用的是commons.fileuploads吗?
如果是的话参考下面的代码package controller; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.fileupload.DiskFileUpload; import org.apache.commons.fileupload.FileItem; public class upload extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } @SuppressWarnings("deprecation") public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String hello = request.getParameter("savePath"); String nttame = request.getParameter("name"); HttpSession session = request.getSession();//通过session传参 System.out.println("接收参数,hello="+hello+",name="+nttame); String name=""; try { DiskFileUpload fu = new DiskFileUpload(); // 设置允许用户上传文件大小,单位:字节,这里设为2m fu.setSizeMax(5 * 1024 * 1024 * 1024); // 设置最多只允许在内存中存储的数据,单位:字节 fu.setSizeThreshold(10 * 1024 * 1024); // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录 fu.setRepositoryPath(System.getProperty("java.io.tmpdir")); fu.setHeaderEncoding("UTF-8");//解决中文文件名乱码。 // 开始读取上传信息 List fileItems = fu.parseRequest(request); // 依次处理每个上传的文件 Iterator iter = fileItems.iterator(); System.out.println(fileItems.size()); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (item.isFormField()) {//表单域的值 System.out.println("表单域名" + item.getFieldName()); System.out.println("表单值" + item);//如果不是文件表单域 System.out.println("名字:"+item.getString()); } else { name = item.getName(); System.out.println("文件名:"+name); long size = item.getSize(); if (name != null && !name.equals("") && size == 0) { continue; } String path = request.getRealPath(""); File uploadFolder = new File(path + "/upload"); if (!uploadFolder.exists()) uploadFolder.mkdirs(); File file=new File(path + "/upload/" + name); item.write(file); } } response.setContentType("text/html");// 必须设置返回类型为text,否则ext无法正确解析json字符串 response.setCharacterEncoding("UTF-8");//设置编码字符集为utf-8,否则ext无法正确解析 PrintWriter outs = response.getWriter(); outs.write("{success:true}"); outs.close(); } catch (Exception e) { e.printStackTrace(); } } }
2013年4月10日 15:39
相关推荐
总之,"ExtJS4多文件上传,带进度条及管理"是Web开发中的高级功能,它结合了ExtJS4的组件化开发优势和swfupload的高效上传能力,为用户提供了一流的文件上传体验。开发者需要掌握相关技术和API,才能灵活地实现这一...
4. **错误处理**:如果某个文件上传失败,`MultiFileUploadField` 可以提供相应的错误提示,帮助用户理解问题所在并采取相应措施。 5. **自定义上传策略**:开发人员可以设置上传策略,例如限制文件类型、大小,...
在本文中,我们将深入探讨如何使用ExtJS 4与Struts2框架实现文件上传功能。ExtJS是一个强大的JavaScript库,提供了丰富的用户界面组件,而Struts2是Java Web开发中的一个MVC框架,用于处理后端业务逻辑。下面,我们...
对应的描述看本人博文《ExtJS4 上传文件类型和大小的判断方法(实例) 》:http://blog.csdn.net/biboheart/article/details/10579175 在这里不具体描述了。看题也大概可以知道这些代码实现了什么应用。
用Ext编写的多文件上传组件,已封装。 支持多文件上传,文件下载,文件删除,
在ExtJS中实现多文件上传功能,能够极大地提升用户体验,特别是在处理大量数据或文件时。本篇文章将详细探讨如何使用ExtJS实现多文件上传,并涵盖相关的关键知识点。 一、ExtJS 文件上传组件 在ExtJS中,我们可以...
本文将深入探讨“extjs多文件上传”这一主题,结合标签“源码”和“工具”,我们将主要关注如何使用ExtJS库实现这一功能,并可能涉及第三方上传工具Plupload。 首先,ExtJS是一个基于JavaScript的UI框架,它提供了...
### ExtJS 多文件上传 UploadDialog For ExtJS3.x #### 概述 在Web开发领域,特别是使用ExtJS框架进行界面设计时,文件上传功能是必不可少的一部分。然而,随着ExtJS版本的更新,原有的多文件上传组件可能不再兼容...
在EXTJS 4Demo压缩包中,可能包含了演示文件上传功能的示例代码,包括配置文件字段、监听事件、处理上传响应等。通过分析和学习这些示例,你可以更好地理解EXTJS 4.0如何实现文件上传功能,并将其应用到自己的项目中...
ExtJS原生多文件拖动上传组件 使用时修改包路径 1.多文件上传 2.支持拖动上传 3.支持图片压缩 4.支持图片合并 5.文件排序 可扩展实时图片预览 api //初始化画板 initCanvas //上传文件窗口 uploadWindow //初始化...
ExtJS 验证上传文件类型 ExtJS 中实现文件上传功能是非常方便的,但对于新手来说,控制文件上传类型是一个难题。例如,我们只想让用户上传特定的文件类型,例如txt文件,那么如何实现当用户上传非txt文件时,给出...
在ExtJS 4中,实现多文件上传功能是一项常见的需求,特别是在处理用户需要一次性上传多个图片或文档的场景下。这一功能通常涉及到Ajax异步通信、文件输入控件、前端文件预览以及后台服务器的处理逻辑。 首先,我们...
EXTJS是一种基于JavaScript的前端框架,它提供了丰富的用户界面组件,包括用于文件上传的组件。在EXTJS中,实现批量上传文件是一项常见的需求,尤其在处理大量数据或媒体文件时。EXTJS的文件上传组件提供了方便的...
本示例解决了strut2+swfupload+extjs4文件上传过程中,后台struts接收不到上传文件的问题。而这个问题如果用servlet做后台可能就不存在。开发者可以用本例源码移植到自己项目中使用 。
在本文中,我们将深入探讨如何在ExtJS4框架中整合SWFUpload库,实现多文件上传功能。ExtJS4是一个强大的JavaScript组件库,用于构建富客户端应用,而SWFUpload则是一个流行的选择,用于在浏览器中实现文件上传,特别...
在ExtJS中,多文件上传控件是开发人员常用的一种功能,用于在网页上实现批量上传多个文件。这种控件允许用户一次性选择并上传多个文件,极大地提升了用户体验。 在ExtJS中实现多文件上传,主要涉及到以下几个关键...
在本文中,我们将深入探讨如何使用ExtJS4和Struts2框架实现文件上传功能。首先,让我们了解一下这两个关键技术和它们在文件上传中的作用。 **ExtJS4:** ExtJS4是一个强大的JavaScript库,用于构建富客户端应用程序...
总的来说,"Extjs4 swfupload多文件上传"是一个结合了ExtJS4组件化开发能力和SwfUpload高级上传功能的解决方案。它提供了一个高效、可控的多文件上传体验,同时也考虑到了服务器安全和性能优化。对于需要开发复杂Web...
在“Extjs4后台框架、多文件上传”项目中,我们可能看到的是一个实现后台与前端交互,特别是支持批量文件上传的解决方案。 在描述中提到的“完美支持extjs4”,意味着该压缩包包含的所有资源和代码都是为ExtJS4版本...