我使用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是不是真的。
答案 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
}
}
},