我使用GWT开发一个Web应用程序,尝试在其中上传文件。我的servlet工作正常。
但是当我使用DiskFileItemFactory()时,它给了我错误。
如果有人可以更正我的代码或告诉我代码中缺少什么。
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/plain");
FileItem uploadItem = getFileItem(request);
if (uploadItem == null) {
response.getWriter().write("NO-SCRIPT-DATA");
return;
}
byte[] fileContents = uploadItem.get();
//TODO: add code to process file contents here. We will just print
response.getWriter().write(new String(fileContents));
}
private FileItem getFileItem(HttpServletRequest request) {
// TODO Auto-generated method stub
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List items = upload.parseRequest(request);
Iterator it = items.iterator();
while (it.hasNext()) {
FileItem item = (FileItem) it.next();
if (!item.isFormField()
&& "uploadForm".equals(item.getFieldName())) {
return item;
}
}
} catch (FileUploadException e) {
return null;
}
return null;
}
错误
java.lang.NoClassDefFoundError: java.rmi.server.UID is a restricted class. Please see the Google App Engine developer's guide for more details.
at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51)
at org.apache.commons.fileupload.disk.DiskFileItem.<clinit>(DiskFileItem.java:109)
at org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:199)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:361)
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
at com.server.FileUpload.getFileItem(FileUpload.java:101)
at com.server.FileUpload.doPost(FileUpload.java:48)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
编辑:工作代码
try {
ServletFileUpload upload = new ServletFileUpload();
response.setContentType("text/plain");
FileItemIterator iterator = upload.getItemIterator(request);
while (iterator.hasNext()) {
FileItemStream item = iterator.next();
InputStream stream = item.openStream();
if (item.isFormField()) {
log.warning("Got a form field: " + item.getFieldName() + " " +item);
} else{
log.warning("Got an uploaded file: " + item.getFieldName() +
", name = " + item.getName());
int len;
byte[] buffer = new byte[8192];
while ((len = stream.read(buffer, 0, buffer.length)) != -1) {
response.getOutputStream().write(buffer, 0, len);
}
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
但是从您的代码看来,您根本不需要使用RMI-为什么要使用它?您不只是要处理并将其存储在某个地方吗?
如果要存储大文件(最大32MB),请使用Blobstore
API
。
如果您知道只有不到1MB的文件,则可以使用JDO / JPA和
包含Blob的普通实体来存储它们-
此选项还可以使您轻松地预处理数据。
问题内容: JSR-299规范在第3.1节中规定: 如果托管bean类是泛型类型,则它必须具有范围@Dependent。如果带有参数化Bean类的托管Bean声明了@Dependent以外的任何范围,则容器将自动检测到该问题并将其视为定义错误。 有效地意味着您不能这样做: 做出此决定的技术原因是什么? 是否会在即将发布的CDI版本中对其进行补救? 有解决此问题的最佳实践吗? 谢谢 编辑 -我经常使
问题内容: 我正在使用from 在运行时中找到实现特定接口的类。当与它一起使用时,可以从类似的包中找到许多类,我想将它们过滤掉。 我想重用Eclipse和其他Java编译器使用的机制来警告受限API。这些信息是驻留在JRE还是硬编码到Eclipse中? 问题答案: 此信息存储在 Eclipse内部的 所谓的“ 执行环境” 概要文件中。 因为这些配置文件最初是OSGi东西(请参阅参考资料),所以这些
问题内容: 我有一个HTML文件,其中有几个直接以脚本标签编写的d3图形。当我将其中一张图外包到一个外部js文件中时,我收到此消息“ NS_ERROR_DOM_BAD_URI:拒绝访问受限制的URI”。如果我使用d3.json删除读取本地json文件的代码,则错误消失。但是必须有可能在嵌入到HTML中的外部js中加载json文件,对吗? 问题答案: 我遇到了相同的错误,解决方案是将index.ht
JPA标准API有一些重要的限制。例如: null 编辑:从QueryDsl文档(没有具体的经验)中,QueryDsl提供了两个查询类和。第一个似乎与JPA标准API有相同的限制,但似乎没有。如果我有时间,我会更深入地研究代码并尝试它。但如果有人已经对此有所了解,那就不客气了!
我是从多年使用spring和刚刚开始研究JEE7和CDI的时候来回答这个问题的。 在Spring世界中,您必须将粘贴在bean上才能将其转换为Spring bean,Spring将注入依赖项,但在CDI中,似乎没有的等效项。 null
问题内容: 在我的代码中,我有一个UITextField,当用户点击时会打开一个UIDatePicker,以使用户能够轻松,高效地滚动至其出生日期。显然,我们不希望UIDatePicker像当前一样向上滚动到2015年。由于这是“出生日期”输入字段,因此我还需要能够将输入限制为16岁以上。我该怎么做呢? 问题答案: 您可以使用dateByAddingUnit并从当前日期减去16年来设置datePi