【问题标题】:How to convert a file to a byte array in Mule ESB?如何在 Mule ESB 中将文件转换为字节数组?
【发布时间】:2014-03-12 03:33:08
【问题描述】:

我正在将 png 文件发布到 Mule 中的 HTTP 入站端点。我想使用 Java 处理文件并将更改后的图像存储在数据库中。我是否需要将图像显式转换为另一种格式(例如,使用 Java 对象转换为字节数组),或者 Mule 中是否有更简化的方法将图像传递给我的 Java bean 进行处理? Mule 代码示例会很有帮助。

---更新---

根据下面乍得的回复,这是处理它的方法吗?不过,我不确定将代码传递给我的 Java bean 的效果如何。

<flow name="flow1" doc:name="flow1">
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP"/>
    <object-to-byte-array-transformer doc:name="Object to Byte Array"/>
    <???>
</flow>

【问题讨论】:

    标签: java image-processing mule mule-studio


    【解决方案1】:

    我相信您的有效负载将是一个 InputStream,因此您可能希望执行 来获取 byte[](如果这是您需要的话)。

    但是,根据您的使用情况,这可能会成为内存问题。如果我正在处理大量 500MB 的图像,那么将所有这些图像都放在内存中可能会导致问题:)

    因此,将这些转储到文件中并处理文件可能是另一种可能性。


    更新:组件和转换器之间会有所不同,但这是一个示例:

    <flow name="flow1">
      <http:inbound-endpoint host="localhost" port="8081"/>
      <object-to-byte-array-transformer doc:name="Object to Byte Array"/>
      <component>
        <singleton-object class="com.my.CustomComponent"/>
      </component>
    </flow>
    

    然后一个类会是这样的:

    public class CustomComponent implements Callable {
      public Object onCall(MuleEventContext eventContext) throws Exception {
        //Get at the payload by eventContext.getMessage().getPayload()
        return eventContext.getMessage();
      }
    }
    

    【讨论】:

    • 嗨,乍得,谢谢。我用你的提议更新了我的问题。这个例子对你的建议准确吗?将它传递给我的 Java bean 的代码是什么样的?是否类似于 然后在代码“public void process(@Payload byteArrayImage)”中?
    猜你喜欢
    • 2020-06-08
    • 2015-09-16
    • 1970-01-01
    • 2014-08-15
    • 2012-01-12
    • 1970-01-01
    • 2012-01-28
    • 2014-12-02
    相关资源
    最近更新 更多