JsonMappingException:无法构造 CommonsMultipartFile 的实例

2024-02-01

我正在使用 Spring-MVC 3.0,在我的应用程序中,我发送一些带有多个附件的信息,并且每个文件都有标题、Id 等。因此,我制作了一个 DTO,如下所示

public class MyDTO {

Long id;

Integer age;

MultipartFile infoFile;

// getter setter

我只是创建一个JSON根据我的上述 DTO 类的对象JS file.

这是我的Controller映射:

@RequestMapping(value = "/saveInfo", method = RequestMethod.POST)
public @ResponseBody String saveInfo(
       @RequestParam(value = "data", required = true) String stdData,
       @RequestParam(value = "fileData", required = false) MultipartFile[] files,
       HttpSession session,HttpServletRequest request) {
    
       MyDTO dto;
       try {
                dto = mapper.readValue(stdData, new TypeReference<MyDTO>() {});  
        } catch (JsonParseException e) {
                e.printStackTrace();
        } catch (JsonMappingException e) {
                e.printStackTrace();
        } catch (IOException e) {
                e.printStackTrace();
        }

但我收到以下错误:

org.codehaus.jackson.map.JsonMappingException: Can not construct instance of    org.springframework.web.multipart.commons.CommonsMultipartFile, 
problem: no suitable creator method found to deserialize from JSON String
at [Source: java.io.StringReader@19747c9; line: 1, column: 336] (through reference chain: com.avi.dto.MyDTO["hbvFile"])

事实上我自己找到了答案。我们无法直接以 JSON 对象发送文件。 AFile对象不保存文件,它保存文件的路径,即。 C:/hi.txt。如果这就是我们放入 JSON 中的内容,它将生成

{"File" : "C:/hi.txt"}

它不会包含文件内容。所以我们不妨直接输入文件路径

JSONObject my_data = new JSONObject();
my_data.put("User", "Avi");
my_data.put("Date", "22-07-2013");
my_data.put("File", "C:/hi.txt");

如果您尝试使用 JSON 进行文件上传,一种方法是使用 Java 7 的 NIO 从文件中读取字节

byte[] bytes = Files.readAllBytes(file_upload .toPath());

Base64 对这些字节进行编码并将它们作为字符串写入 JSONObject 中。使用 Apache Commons 编解码器

Base64.encodeBase64(bytes);
my_data.put("File", new String(bytes));

94 Unicode根据 JSON 规范可以表示为一个字节的字符(如果您的 JSON 以 UTF-8 传输)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JsonMappingException:无法构造 CommonsMultipartFile 的实例 的相关文章

  • 如何将参数传递给Workmanager DoWork方法

    我想安排任务在 24 小时后从数据库中删除 public class WorkManager extends Worker public WorkManager NonNull Context context NonNull WorkerP
  • Jboss EAP 7 - 如何从部署中排除隐式模块(javax.jms)?

    我没想到我会来到这里 但经过大量 Google 和 StackOverflow 搜索后 我来到了这里 这就是我的确切问题 https www linkedin com pulse tale two jars marco antonio al
  • 如何确定 JDialog 显示在哪个屏幕上

    我有一个非常大的应用程序 有多个对话框 我的任务是确保不完全可见的对话框 因为用户将其从可见屏幕区域拉出 移回屏幕中心 当我只处理一个屏幕时 这没问题 它工作得很好 但是 该应用程序的大多数用户的桌面上都有两个屏幕 当我尝试找出对话框显示在
  • 如何在 Android 中签署 AAR Artifacts?

    我目前正在开发一个 AAR android 库 我想用我自己的密钥对已发布的工件进行签名 以便我可以确定我是否发布了具有相同名称和功能的假 aar 注意事项1 我希望能够以编程方式检查我的库的真实性 即使是一个伪造的库 只是伪造了我的 aa
  • 是否有任何理由使用 ZoneId.of("UTC") 而不是 ZoneOffset.UTC ?

    有什么理由使用ZoneId of UTC 代替ZoneOffset UTC 我们知道两者之间的区别 如ZoneOffset UTC 和 ZoneId of UTC 之间有什么区别 https stackoverflow com questi
  • 与 Jackson 一起从 ASP.NET 反序列化日期

    我有一个 json 字符串 从 ASP NET Rest 服务返回 中的日期 如下所示 created Date 1277931782420 0700 杰克逊无法解析该日期 我可以编写自己的日期格式并将其传递给mapper getDeser
  • 简单的Java程序插入USB热点后速度慢100倍

    我有以下Java程序 class Main public static void main String args throws java io IOException long start System nanoTime java io
  • 使用 Copy.CopyIntoItems Web 服务将文件上传到 SharePoint 2010 时收到 400 错误请求

    SharePoint 新手 我尝试使用 Java 的 CopyIntoItems Web 服务方法将文档上传到 SharePoint 但不断收到 400 错误请求 我使用 Java 的 wsimport 从 wsdl 文件生成类文件 这是我
  • 竞争条件和 Clojure Atoms

    clojure atom 的文档指出 Changes to atoms are always free of race conditions 然而 竞争条件不仅是根据更改定义的 而且是在不同线程中并行逻辑操作的上下文中定义的 我想知道 保证
  • 如何使用Gson将JSONArray转换为List?

    在我的 Android 项目中 我试图将收到的 JSONArray 转换为列表 在 的帮助下这个答案 https stackoverflow com questions 8371274 how to parse json array in
  • 如何从 Java 生产代码中删除调试语句

    编译器是否可以从生产代码中删除用于调试目的 例如日志记录 的语句 调试语句需要以某种方式进行标记 可能使用注释 设置属性 debug true 并在每个调试语句中检查它很容易 但这会降低性能 如果编译器能够简单地使调试语句消失 那就太好了
  • 字符串 a == 字符串 b 的规则 [重复]

    这个问题在这里已经有答案了 我试图了解字符串池的工作原理以及一个字符串等于另一个字符串的规则是什么 例如这个片段 public static void main String hi String s1 lol String s2 lol S
  • 基于磁盘的 HashMap [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Java 是否有 或者是否有可用的库 允许我拥有基于磁盘的 HashMap 它不需要是原子的或任何东西
  • 将 JSON 字符串传递给 Django 模板

    我一直在用头撞墙 试图找出为什么我无法将从 Django 模型生成的 JSON 字符串传递到模板的 javascript 静态文件中 事实证明 问题不在模型级别 使用serializers serialize 在脚本本身中放入相同的字符串将
  • Java中如何将Object[]转换为String[]?

    我有一个关于 Java 的问题 我有一个Object Java默认的 不是用户定义的 我想将它转换为String 谁能帮我 谢谢 这是转换 for int i 0 i lt objectArr length i try strArr i o
  • 将序列化数据发送到 servlet 时出现 java.io.EOFException

    我正在尝试从 Java 本地应用程序上传一个包含文件到服务器的对象 我的计划是 在 tomcat 上运行的 servlet 将使用以下方法获取对象ObjectInputStream in the doGet方法 但我得到一个EOFExcep
  • 使用 ProcessBuilder 启动 CMD

    我尝试使用以下代码在 Windows 中启动 CMD 应用程序 但它无法按预期工作 来自不同网站的几个示例表明 cmd 作为 ProcessBuilder 构造中的参数应该有效 我需要做什么才能让我的 Java 应用程序在 Windows
  • 使用 SimpleDateFormat、Java 进行错误的日期解析

    我需要使用日期模式 yyyy MM dd 解析输入字符串中的日期 如果日期采用任何其他格式 则抛出错误 这是我解析日期的代码 private void validateDate throws MyException Date parsedD
  • Java 中有类似 .NET 的 NotImplementedException 的东西吗?

    有没有类似 NET 的东西NotImplementedException在Java中 康芒斯朗 http commons apache org proper commons lang javadocs api 2 6 org apache
  • 如何使用 iBatis (myBatis) 的注释进行 IN 查询?

    我们只想在 MyBatis 中使用注释 我们确实在努力避免使用 xml 我们尝试使用 IN 子句 Select SELECT FROM blog WHERE id IN ids List

随机推荐

  • 为什么编译器抱怨对齐?

    我想了解更多关于对齐的信息 为什么 Microsoft 编译器 Visual Studio 2012 Express 会抱怨以下代码片段的对齐情况 declspec align 16 class Foo public virtual Foo
  • seq 和 == 运算符的神秘行为。精度问题?

    我遇到了该函数的某种奇怪 或只是出乎意料 的行为seq 创建简单序列时 某些值无法与 运算符正确匹配 看这个最小的例子 my seq lt seq 0 0 4 len 5 table my seq ok returns 0 0 1 0 2
  • XSLT 聚合 XML 标记值并存储新标记

    我是 xslt 的新手 并尝试使用 XSLT 处理以下 XML
  • 奥尔良任务的交错

    有一个问题here https stackoverflow com questions 54456369 orleans single threaded nature not respected by continuewith其中 Orle
  • 如何使用 knit::spin 注释掉行

    使用时spin包装内knitr 如何简单地注释掉一些东西 使它们看不见旋转 roxygen风格线 被视为出现在报告中的行 通常的 R 注释 被视为R注释并出现在代码块中 仅是文本且开头没有特殊字符的行会导致错误 以 开头的行LaTeX评论
  • PHP 类自动加载

    我有一个 简单框架 其主要实例是 app 现在 实现自动加载器的最佳方法是什么 不使用 Composer 我需要的是有一个处理所有自动加载的类 支持各种名称空间 我有一些方法 困境 起初我认为我应该创建一个处理所有事情的 静态 类 但后来我
  • Boost random::discrete_distribution 构建后如何更改权重?

    好的 可以在 boost random discrete distribution 中给出权重 概率 e g 双倍概率 0 5 0 1 0 1 0 1 0 1 0 1 boost random discrete distributiondi
  • 使用 PowerShell 重命名文件以增加文件编号?

    我有一堆名为 attachment 023940 attachment 024039 attachment 024041 attachment 024103 etc 我需要通过将文件号增加给定的数字来重命名文件 以便它们与数据库中的正确 I
  • gperftools CPU profiler 究竟是如何启动的?

    gperftools 文档 http google perftools googlecode com svn trunk doc cpuprofile html说libprofiler应该链接到目标程序 gcc myprogram c lp
  • 无法从具有多个返回的 Select 中的使用情况推断出 C# 类型参数

    我不认为我做了任何太深奥的事情 但我没有看到任何其他与此相关的问题 以下代码 我已将其简化为要点 在 C 4 中生成编译器错误 但是 类型参数是什么应该是显而易见的 有一个最大公分母 类 A 也明确定义在方法 Frob 的返回类型 难道编译
  • NodeJS base64 图像编码/解码不太工作

    我一直在尝试将发布到nodeJS 和express框架 的图像保存到数据库 但遇到了一些麻烦 忽略所有的 Web 处理 我认为我已经将问题范围缩小到了 Node js 中进行 Base64 编码的方式 我相信下面过于简化的示例应该可以工作
  • 如何将 tibble 导出为 .csv

    我使用 rfm 包进行了 rfm 分析 结果在 tibble 中 我似乎不知道如何将其导出到 csv 我尝试了下面的参数 但它导出了一个空白文件 gt dim bmdata4RFM 1 1182580 3 gt str bmdata4RFM
  • C 中的 #line 关键字

    我试图理解一些代码 但遇到了一个我以前从未见过的关键字 我尝试用谷歌搜索它 但也没有找到任何有关它的信息 char valtext line 1 Values l define INITIAL 0 line 2 Values l int r
  • 如何使用注释在 Spring MVC 中创建默认方法?

    我找不到解决办法 这让我发疯 我映射了 Controller 它使用 RequestMapping 响应多种方法 当没有指定更具体的情况时 我想将其中一种方法标记为默认方法 例如 Controller RequestMapping user
  • 使用 Click 库的 Python 3.6 中没有模块错误

    我正在尝试使用该包在 python 中构建 CLIclick 我使用的Python版本是3 6 这是我的应用程序的主要部分 import os import click cmd folder os path join os path dir
  • php if() 中的多个 OR 似乎没有正确响应。测试数组值和所有。我究竟做错了什么?

    我正在运行一个非常简单的 if 语句 在我添加两个额外的 之前它工作得很好 或 运算符 这是我的代码 if planDetails Company name company1 planDetails PlanDetail name pd n
  • Spring JPA自动创建表失败

    我对 Spring JPA Hibernate MySQL 有疑问 我有一个实体 Nom java 和存储库 公共接口 NomRepository 扩展 JpaRepository 它们的创建和注入都很好 问题是 当我尝试通过存储库的保存方
  • 如何以经过身份验证的方式运行应用程序

    我创建了一个小型应用程序 它尝试根据用户的用户名和密码对用户进行身份验证 当在 Active Directory 所在的同一域上运行时 此应用程序可以正常工作 我现在必须扩展该应用程序 使其也可以在安全和权限方面 封闭 的域上运行 换句话说
  • 为什么 PostgreSQL 枚举类型数组允许空值?

    我正在使用 PostgreSQL 数据库 并使用枚举类型的数组作为其中一列 CREATE TYPE my type enum AS ENUM value1 value2 value3 ALTER TABLE my table ADD COL
  • JsonMappingException:无法构造 CommonsMultipartFile 的实例

    我正在使用 Spring MVC 3 0 在我的应用程序中 我发送一些带有多个附件的信息 并且每个文件都有标题 Id 等 因此 我制作了一个 DTO 如下所示 public class MyDTO Long id Integer age M