/** * 处理已上传的文件 * @param ctx 上下文 * @param cookies 处理的cookies * @param handler 处理器 */ public void handle(Context ctx,Object cookies,FileItemHandler handler){ if (fileItems != null && !fileItems.isEmpty()){ Map<String,Object> result = new HashMap<String,Object>(); // NOSONAR for (FileItem item:fileItems){ if (item != null && !item.isFormField()){ contentLength += item.getSize(); Map<String,Object> fileResult = new HashMap<String,Object>(); // NOSONAR fileResult.put("field", item.getFieldName()); fileResult.put("name", item.getName()); fileResult.put("size",item.getSize()); handler.handle(ctx,cookies,item, fileResult); result.put(item.getFieldName(), fileResult); } } getRoot().put("files", result); } }
@Override public void finish(Context ctx, boolean closeStream) { Map<String,Object> theRoot = getRoot(); JsonTools.setString(theRoot, "code", ctx.getReturnCode()); JsonTools.setString(theRoot, "reason", ctx.getReason());
@Override protected int onJson(Context ctx) { if (script != null){ MultiPartForm msg = (MultiPartForm) ctx.asMessage(MultiPartForm.class); LogicletContext logicletContext = new Context.ServantLogicletContext(ctx); logicletContext.setObject("$context", ctx); logicletContext.SetValue("$service", service); logicletContext.setObject("$message", msg); try { XsObject doc = new JsonObject("root",msg.getRoot()); script.execute(doc,doc, logicletContext, null); }finally{ logicletContext.removeObject("$context"); logicletContext.removeObject("$message"); String keyword = logicletContext.GetValue("$keyword", ""); if (StringUtils.isNotEmpty(keyword)){ ctx.setKeyword(keyword); } } }else{ ctx.asMessage(MultiPartForm.class); } return 0; } }