MULE 通过HTTP进行文件上传

2024-02-14 17:50
文章标签 进行 http 上传 mule

本文主要是介绍MULE 通过HTTP进行文件上传,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

工具版本
mule-standalone3.9.0
Anypoint-Studio6.4.0
Postman6.2.5

写在前面
今天想起来还没有尝试过Mule的文件上传,毕竟上传文件是一个很常见的功能了,因此实践做一个Mule文件上传的示例。使用Postman能够很轻松地模拟前台表单上传文件的过程。

首先看一下Mule接收文件是怎么样的

在Logger组件打了一个断点,为了方便观察通过HTTP组件接收文件后Message里面放了什么东西。

在Postman中选择合适的方式上传名为1.jpg的图片,点击发送

上面断点已经定位了文件上传的关键就是inboundAttachments属性里面,因此往下就要对这个属性干点事情。
同时如果留意Logger组件里面的内容,实际上并不能发现到什么东西

因为当前payload是空的,唯一有所关联的地方就是看到Content-Type是文件上传时需要设置的格式。

因此接下来使用一个Java Transformer来接着处理

package test;import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;import javax.activation.DataHandler;import org.apache.log4j.Logger;
import org.mule.api.MuleMessage;
import org.mule.api.transformer.TransformerException;
import org.mule.module.http.internal.multipart.HttpPart;
import org.mule.module.http.internal.multipart.HttpPartDataSource;
import org.mule.transformer.AbstractMessageTransformer;
/*** 上传文件处理* @author CGYDAWN* @date 2018-09-06*/
public class FileUploadTransformer extends AbstractMessageTransformer {private static final Logger logger = Logger.getLogger(FileUploadTransformer.class);@Overridepublic Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {//file是表单文件上传所设置的name值DataHandler dataHandler = message.getInboundAttachment("file");HttpPartDataSource dataSource = (HttpPartDataSource)dataHandler.getDataSource();HttpPart httpPart = (HttpPart)dataSource.getPart();String contentDisposition = httpPart.getHeader("Content-Disposition");String fileName = contentDisposition.substring(contentDisposition.indexOf("filename=\"") + 10,contentDisposition.lastIndexOf("\""));String receivePath = "D:\\workshop\\mule\\test\\src\\main\\resources\\";File file = new File(receivePath+fileName);// JDK1.7支持的自动释放资源try(){}catch{}语法try(FileOutputStream fos = new FileOutputStream(file);ByteArrayInputStream is = (ByteArrayInputStream)dataSource.getInputStream();) {int length = 0;byte[] bytes = new byte[1024];while ((length = is.read(bytes, 0, bytes.length)) != -1) {fos.write(bytes);fos.flush();}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null;}}


可以看到图片已经在所设置的src/main/resource路径下

至此就成功实践了在Mule中上传图片的功能了

这篇关于MULE 通过HTTP进行文件上传的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/709183

相关文章

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

GitLab文件的上传与下载方式

《GitLab文件的上传与下载方式》:本文主要介绍GitLab文件的上传与下载方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录GitLab 项目拉取到本地GitLab 项目上传方法方法 1:本地项目未初始化Git方法 2:本地项目已初始化GitGitLab 上

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

SpringBoot如何对密码等敏感信息进行脱敏处理

《SpringBoot如何对密码等敏感信息进行脱敏处理》这篇文章主要为大家详细介绍了SpringBoot对密码等敏感信息进行脱敏处理的几个常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录​1. 配置文件敏感信息脱敏​​2. 日志脱敏​​3. API响应脱敏​​4. 其他注意事项​​总结

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

python进行while遍历的常见错误解析

《python进行while遍历的常见错误解析》在Python中选择合适的遍历方式需要综合考虑可读性、性能和具体需求,本文就来和大家讲解一下python中while遍历常见错误以及所有遍历方法的优缺点... 目录一、超出数组范围问题分析错误复现解决方法关键区别二、continue使用问题分析正确写法关键点三