Post 将压缩文本文件发布到ApacheNIFI

Post 将压缩文本文件发布到ApacheNIFI,post,zip,apache-nifi,Post,Zip,Apache Nifi,zip格式的压缩文本文件必须通过HTTP或HTTPS发送到apache nifi。在那里,它必须被解压缩并存储在HDFS上。迄今为止的努力都是徒劳的 测试文件是一个压缩文本文档blabla.txt Python帖子 import requests requests.post('http://example.com/endpoint', files={'files': open('blabla.zip', 'rb')}) Nifi过程 我的最佳尝试是使用以下Nif

zip格式的压缩文本文件必须通过HTTP或HTTPS发送到apache nifi。在那里,它必须被解压缩并存储在HDFS上。迄今为止的努力都是徒劳的

测试文件是一个压缩文本文档
blabla.txt


Python帖子

import requests
requests.post('http://example.com/endpoint',
              files={'files': open('blabla.zip', 'rb')})

Nifi过程

我的最佳尝试是使用以下Nifi处理器:

  • HandleHttpRequest
  • RouteOnAttribute(在端点/端点上进行筛选) flowfile的内容是: --e313bde14db343d99c74fbb129fba9ac 内容配置:表单数据;name=“文件”;filename=“blabla.zip”

    PKh|�L��G 布拉布拉,txtK,NAB�)�&PKh|�L��G $blabla.txt
    F�-.���� 您正在尝试替换ZIP文件本身中的文本吗?如果要修改内容,我认为内容处理器应该在Extract/ReplaceText之前

    为了使
    java.util.zip
    正常工作,您只需要流文件中的压缩内容。上面引用的内容包括未压缩内容:

    --e313bde14db343d99c74fbb129fba9ac Content-Disposition: form-data; name="files"; filename="blabla.zip"
    

    当zip实用程序遇到该字符串时,它抛出一个异常。因此,您做了一件合理的事情,并试图从流文件中删除该元数据。不幸的是,该操作会破坏zip内容,这就是您看到该错误的原因。您可以更改数据流以使用ListenHTTP处理器吗?在NiFi和关于通过HTTP与NiFi通信的文章中可以找到这些处理器的详细概述

    我不想替换任何内容!我只想获取流文件内容的zip部分。我更新了问题,即跳过
    提取
    /
    替换
    步骤时会发生什么。您知道压缩负载的文件编码是什么吗?如果我在记事本++中打开本地zip文件,is会说它是
    ANSI
    文件格式。如果我下载zip(无法解压缩),它会显示
    UTF-8
    。我怀疑除了您看到的文件处理问题之外,您还存在编码问题。文件是否从Windows计算机移动到基于Linux的服务器,最后返回到Windows计算机?文件是否从Windows计算机移动到Linux计算机。我可以在文件内容中看到它们与本地计算机上的文件不同。我尝试使用NiFi的功能来更改编码,但我找不到ANSI的可能性。我通过在发送zip文件之前对其进行base64编码来“解决”这一问题。我读过许多帖子,说ListenHTTP没有正确的功能,HandleHttpRequest是解决方法。ListenHTTP是否有不同的方式接收相同的消息?