我在具有带字段的html表单的java服务器端应用程序中使用Apache Commons FileUpload:
我想在GAE上传此应用。
我可以接收上传的文件(使用org.apache.commons.fileupload.FileItemStream
作为流)。
我想接收太多输入文本字段(即1)和2)) - 由app用户完成
我想使用org.apache.commons.fileupload.FileItem
访问这些内容,但收到java.rmi.server.UID is a restricted class
答案 0 :(得分:10)
您应该使用FileItemIterator的Apache Commons FileUpload。
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import java.io.InputStream;
..
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
try {
ServletFileUpload upload = new ServletFileUpload();
res.setContentType("text/plain");
FileItemIterator iterator = upload.getItemIterator(req);
while (iterator.hasNext()) {
FileItemStream item = iterator.next();
String name = item.getFieldName();
InputStream stream = item.openStream();
if (item.isFormField()) {
//regular form field
resp.getWriter().println(("Form:" + name + " : " + Streams.asString(stream));
} else {
//fileform field
resp.getWriter().println(("File:" +name + " : " + item.getName());
}
}
} catch (Exception ex) {
throw new ServletException(ex);
}
}
答案 1 :(得分:1)
看看这个:Google App Engine and FileUpload
您不能直接写入GAE中的文件系统,但请查看GAEVFS,它使用数据存储和内存缓存来模拟文件系统。