Azkaban的Web Server源码探究系列18:上传flow涉及的过程分析

解读Azkaban Webapp中MultipartFile解析流程及ZIP文件解压验证
本文详细解析了Azkaban Webapp中MultipartFile解析过程,包括如何从HTTP请求中提取文件,并通过DirectoryFlowLoader进行ZIP文件的验证与解析。将逐步深入探讨文件上传的各个环节,以及后续处理步骤。

上节涉及到上传flow,图为

103205_aawc_1382024.png

对应的servlet是:

root.addServlet(new ServletHolder(new ProjectManagerServlet()), "/manager");


stop in azkaban.webapp.servlet.ProjectManagerServlet.doPost

下面来debug这个过程!

================================================================================

首先是request的文件提取,代码为:

 @SuppressWarnings("unchecked")

  public Map<String, Object> parseMultipart(HttpServletRequest request)

      throws IOException, ServletException {

  // org.apache.commons.fileupload.servlet.ServletFileUpload

    ServletFileUpload upload = new ServletFileUpload(_uploadItemFactory);

    List<FileItem> items = null;

    try {

     //基于commons-upload解析

      items = upload.parseRequest(request);

    } catch (FileUploadException e) {

      throw new ServletException(e);

    }

 

    Map<String, Object> params = new HashMap<String, Object>();

    for (FileItem item : items) {

     //开始遍历

      if (item.isFormField())

        params.put(item.getFieldName(), item.getString());

      else

        params.put(item.getFieldName(), item);

    }

    return params;

  }

Step completed: "thread=2067661130@qtp-1640296160-4", azkaban.webapp.servlet.MultipartParser.parseMultipart(), line=57 bci=102

57            params.put(item.getFieldName(), item);

 

2067661130@qtp-1640296160-4[1] print item

 item = "name=firstflow.zip, StoreLocation=/tmp/upload_517889bb_131b_4a07_b77b_d926a43bd759_00000000.tmp, size=375 bytes, isFormField=false, FieldName=file"

 

上面都是上传文件的东西,没啥好说的,azkaban会把zip文件解压缩

然后传给validator来解析,这里是DirectoryFlowLoader验证

这个要分几个小节来说,下回分解!



转载于:https://my.oschina.net/qiangzigege/blog/655687

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值