如何将字节数组转换为MultipartFile

2023-12-23

我正在接收 BASE64 编码字符串(encodedBytes)形式的图像,并使用以下方法在服务器端解码为 byte[] 。

BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(encodedBytes);

现在我想使用上面获得的这个字节将其转换为 MultipartFile?

有什么方法可以将 byte[] 转换为 org.springframework.web.multipart.MultipartFile 吗?


org.springframework.web.multipart.MultipartFile是一个接口,因此首先您需要使用该接口的实现。

我可以看到您可以开箱即用的该接口的唯一实现是org.springframework.web.multipart.commons.CommonsMultipartFile。可以找到该实现的 APIhere https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/multipart/commons/CommonsMultipartFile.html

或者作为org.springframework.web.multipart.MultipartFile是一个接口,您可以提供自己的实现并简单地包装您的字节数组。举一个简单的例子:

/*
*<p>
* Trivial implementation of the {@link MultipartFile} interface to wrap a byte[] decoded
* from a BASE64 encoded String
*</p>
*/
public class BASE64DecodedMultipartFile implements MultipartFile {
        private final byte[] imgContent;

        public BASE64DecodedMultipartFile(byte[] imgContent) {
            this.imgContent = imgContent;
        }

        @Override
        public String getName() {
            // TODO - implementation depends on your requirements 
            return null;
        }

        @Override
        public String getOriginalFilename() {
            // TODO - implementation depends on your requirements
            return null;
        }

        @Override
        public String getContentType() {
            // TODO - implementation depends on your requirements
            return null;
        }

        @Override
        public boolean isEmpty() {
            return imgContent == null || imgContent.length == 0;
        }

        @Override
        public long getSize() {
            return imgContent.length;
        }

        @Override
        public byte[] getBytes() throws IOException {
            return imgContent;
        }

        @Override
        public InputStream getInputStream() throws IOException {
            return new ByteArrayInputStream(imgContent);
        }

        @Override
        public void transferTo(File dest) throws IOException, IllegalStateException { 
            new FileOutputStream(dest).write(imgContent);
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将字节数组转换为MultipartFile 的相关文章

随机推荐

  • gdb 回溯

    我刚刚尝试过使用 gdb回溯Linux http www backtrack linux org 我必须说这太棒了 我想知道 backtrack 中的 gdb 是如何配置为这样的 当我设置断点时 会打印所有寄存器值 堆栈的一部分 数据部分的
  • 适用于 Android 的 Google 环聊 API

    您知道如何将 Google Hangout 集成到 Android 应用程序中吗 我没有看到任何当前可用的 API 使用 WebView 是一种选择吗 目前没有任何内容 我不相信 WebView 版本会起作用 因为环聊需要谷歌安装的相机插件
  • Python Fizzbuzz 循环问题

    我已经搜索了大约一个小时的答案 似乎大多数人都以与我不同的方式编码 fizzbuzz 然而 在尝试了一切方法来找出为什么这个简单的代码不起作用之后 我感到非常沮丧 谁能指出我确定遇到的简单问题 代码运行但只返回值 1 def fizzbuz
  • Android L Nexus 5 上的材料设计

    我的应用程序在 Android L 上崩溃 但在 Android Kitkat 上运行 布局上也没有 RippleDrawable 这是异常和布局 XML 布局
  • ocaml 命令行找不到“topfind”

    我已经安装了顶级 并且有 OCAML TOPLEVEL PATH 设置 export OCAML TOPLEVEL PATH Users smcho opam system lib toplevel 我检查该目录是否存在 并且有一个文件to
  • 在 strpos() 的字符串中使用正则表达式

    我想让脚本搜索 open email msg 不同的电子邮件将有不同的信息 但格式相同 如下所示 我并没有真正使用正则表达式太多 但我想做的是每当我用它来搜索字符串时 它都会搜索 标题 标题数据 类别 类别数据 我问因为我不认为类似的事情
  • 无法找到 Python PIL 库。Google App Engine

    完美安装了Google App Engine SDK Python 2 6 想要进入图像并在本地进行测试 已安装 PIL 安装了Python 然后运行了PIL安装 这次成功了 事情看起来不错 但尝试进行本地主机图像处理 给出 NotImpl
  • Node Puppeteer, page.on( "request" ) 抛出“请求已处理!”

    我在用着puppeteer extra https www npmjs com package puppeteer extra和 node js 来迭代多个 url 我试图拦截一些资源类型以在每次迭代时加载 并收到以下错误 PS C Use
  • ios 中的阴影

    iOS 中如何去掉物体的阴影 My object is UIImageView and i want to drop an elliptical shadow Please refer image for reference 最好使用另一张
  • 使一个流的输出成为另一个流的输入的最佳方法是什么

    我想知道除了使用字节缓冲区和循环之外 是否有更好 内置的方法从一个流读取并将其写入另一个流 在 NET 中 通常 这样做是为了将转换应用于流并将其继续移动 在本例中 我正在加载一个文件 将其放入 deflate 流并将其写入文件 为简单起见
  • AMD(特别是 RequireJs)如何处理跨多个模块的依赖关系

    我有一个调用 require 的主初始化脚本 其中一个依赖项是实用程序框架 但我通过 require 指定的其他一些模块本身也已将此框架定义为依赖项 例如 init js require module a module b module c
  • 删除了方法的 C++ 类可以轻松复制吗?

    我希望类 B 继承类 A 的除少数方法之外的所有方法 假设它是可简单复制的 并且仍然可简单复制 在 C 11 中我可以删除方法 举个例子 class A trivially copyable private stuff here publi
  • 用于奇异控制流的 ES6 Promise 模式

    ES6 Promise 很棒 到目前为止 调整我的想法很容易 回调习惯用法 我发现它自然地鼓励更多的模块化代码 并且 当然错误处理更加清晰 但有几次我遇到了看起来不像 的心流情况 可以很容易地从节点返回到承诺 也许就是这样 但也许我只是对答
  • 如何在 VS Code 设置中为 VS Code 进程指定环境变量?

    我发现这两种方法来添加环境变量 添加环境变量terminal integrated env osx对于终端 添加环境变量launch json用于调试 但 VSCode Process 没有类似的配置选项 一些插件经常需要访问特定的环境变量
  • C++ 中的 rand() 和 srand()

    C 中生成随机数的基础是什么 这背后有什么逻辑或者原理吗 生成的数字是完全随机的吗 假设我正在运行这个程序 include
  • 在javascript中获取元数据属性

    我在从元标记检索信息时遇到问题 我正在尝试从网站获取 img src 但不太明白 这是我正在尝试做的一个例子 var image document querySelector meta property og image getAttrib
  • 如何在引导模式主体上创建具有固定标题的可滚动表格?

    我尝试了这个 但这不起作用 字段值是动态变化的 所以宽度不固定 div class table responsive table class table table hover thead tr tr thead tbody style h
  • 对 Django Q 对象执行逻辑异或

    我想执行逻辑异或 XOR http en wikipedia org wiki Exclusive disjunction on django db models Q对象 使用operator http docs python org 2
  • if 语句无论条件是否满足都运行

    我的 if 语句贯穿始终 就好像条件已满足 即使条件尚未满足 我尝试过移动一些代码 甚至以不同的方式重写 if 语句 但它并没有改变结果 有谁知道我做错了什么 include
  • 如何将字节数组转换为MultipartFile

    我正在接收 BASE64 编码字符串 encodedBytes 形式的图像 并使用以下方法在服务器端解码为 byte BASE64Decoder decoder new BASE64Decoder byte decodedBytes dec