使用Spring Boot

时间:2017-10-26 07:28:30

标签: java spring spring-mvc thymeleaf

我使用Thymeleaf和Spring启动将图像上传到数据库。 我采取的第一步是创建上传页面和控制器方法,以将MultipartFile(图像)作为字节数组。

这是我没有得到正确的字节数组的地方。

mymeleaf部分的代码:

<div class="col-sm-8">
  <form action="#" th:action="url to the controller method" method="post" enctype="multipart/form-data">

    <div class="form-group">
      <div class="col-md-2">
        <label for="image">Upload image</label>
      </div>
      <div class="col-md-8">
        <input id="image" type="file" name="image"/>
      </div>
    </div>

    <button type="submit" class="btn btn-default">Submit</button>
  </form>
</div>

这是我的Spring启动控制器:

@RequestMapping(value = "url to the controller method", method = RequestMethod.POST)
public String createImage(@RequestParam("image") MultipartFile image) {

    try {
        byte[] design = image.getBytes();

        System.out.println(design.toString());

    } catch (IOException e) {
        e.printStackTrace();
    }

    return "redirect:/home";
}

我的字符串返回:

[B@4fe2fee8

这似乎不是正确的值,因为当我在互联网上转换相同的图像时,我得到了一长串的0和1。

有人知道如何解决这个问题吗?好像我的多部分文件不包含上传的图像。

我在表单操作中的网址似乎是正确的,因为我可以在控制器中找到我的Post方法。

修改

使用image.isEmpty()检查控制器中的MultipartFile是不是真的。

3 个答案:

答案 0 :(得分:1)

toString不会打印字节数组的内容。 Object.toString的java文档声明如下:

  

类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@”和对象的哈希码的无符号十六进制表示组成。 / p>

这正是显示的内容。该数组包含所有0和1.您可以轻松地将内容写入文件并打开它以查看它是否是正确的图像。

Files.write(Paths.get("image.jpg"), image.getBytes());

答案 1 :(得分:0)

您可以使用Arrays.stream(design).forEach(System.out::println)打印内容。

答案 2 :(得分:0)

如果你想检查图像数据是否为空,你可以这样做:

path: 'pages',
    children: [
      {
       path: 'ganado',
       data: {
          menu: {
            title: 'Ganado',
            icon: '../assets/icon/ganado.png',
            selected: false,
            expanded: false,
            order: 1
          }
       }
     },
    {
      path: 'confort',
      data: {
          menu: {
            title: 'Confort',
            icon: 'ion-home',
            selected: false,
            expanded: false,
            order: 2
          }
      }
    },
    {
      path: 'calidad',
      data: {
          menu: {
            title: 'Calidad y Composción',
            icon: 'ion-erlenmeyer-flask',
            selected: false,
            expanded: false,
            order: 3
          }
      }
    },