我需要从web客户端(html+javascript)发送(上传)一个图像文件到服务器(java/springboot),然后存储它。
当然,在客户端,我创建了一个表单
<form action="" name="missionForm" method="post" enctype="multipart/form-data" novalidate>
<fieldset>
<div class="field">
<label>
<span style="font-weight:bold">Mission name</span>
<input data-validate-length-range="3" name="name" id="name" required="required" />
</label>
</div>
<div class="field">
<label>
<span>Mission image (png):</span>
<input type='file' class='optional' name='loadImage' id='loadImage' accept='image/png'>
</label>
</div>
</fieldset>
</form>
下面通过JavaScript读取表单,JavaScript通过fetch发送请求
document.forms[0].onsubmit = function(e){
e.preventDefault();
var imageFile = document.forms['missionForm']['loadImage'].files[0];
const test = fetch(url+"/api/saveImage", {
method: 'POST',
body: imageFile,
});
}
在服务器端(Java / Springboot),我在Controller类中创建了以下方法
@PostMapping(value="/api/saveImage")
public void saveImage(@RequestParam("file") MultipartFile multipartFile) throws SQLException{
String fileName = StringUtils.cleanPath(multipartFile.getOriginalFilename());
System.out.println("filename is "+fileName);
}
当我启动它时,我在客户端上得到错误500。在服务器端,我得到以下错误“org”。SpringFrameworkweb.multipart.MultipartException:当前请求不是多部分请求”
我不明白为什么。有人能帮忙吗?我肯定我在这里错过了一些愚蠢的东西。谢谢!
我尝试在获取请求中“强制”content-type,但只得到了一个不同的错误
const test = fetch(url+"/api/saveImage", {
method: 'POST',
headers: {'Content-Type': 'multipart/form-data',},
body: imageFile,
});
错误是“org”。apache.tomcat.util.http.fileupload.FileUploadException:请求被拒绝,因为找不到多部分边界”
1条答案
按热度按时间omhiaaxx1#
您应该使用表单数据。另外,在从客户端上传文件之前,您可以使用postman,并可以从中生成文件上传代码。代码如下:
Postman 示例: