<image :src="https://aliyuncs.com/images/001.jpg">前端怎样获取image标签的图片文件,并把该文件传给java后端
时间: 2023-12-16 20:04:05 浏览: 128
前端可以使用JavaScript获取image标签的图片文件,然后使用FormData对象将文件上传给Java后端。以下是代码示例:
```javascript
// 获取image标签
var img = document.querySelector('img');
// 获取图片文件
var file = null;
if (img.src.startsWith('data:')) {
// 如果是base64编码的图片,则直接提取base64字符串并转换为Blob对象
var base64Data = img.src.split(',')[1];
var contentType = img.src.split(';')[0].split(':')[1];
var byteCharacters = atob(base64Data);
var byteArrays = [];
for (var i = 0; i < byteCharacters.length; i++) {
byteArrays.push(byteCharacters.charCodeAt(i));
}
var blob = new Blob([new Uint8Array(byteArrays)], {type: contentType});
file = new File([blob], 'image.jpg');
} else {
// 如果是图片URL,则向服务器请求获取图片文件
var xhr = new XMLHttpRequest();
xhr.open('GET', img.src, true);
xhr.responseType = 'blob';
xhr.onload = function() {
if (xhr.status === 200) {
file = new File([xhr.response], 'image.jpg');
// 将文件上传给Java后端
var formData = new FormData();
formData.append('file', file);
var xhr2 = new XMLHttpRequest();
xhr2.open('POST', '/upload', true);
xhr2.onload = function() {
if (xhr2.status === 200) {
console.log('文件上传成功');
} else {
console.error('文件上传失败,错误码:', xhr2.status);
}
};
xhr2.send(formData);
} else {
console.error('获取图片失败,错误码:', xhr.status);
}
};
xhr.send();
}
```
在Java后端中,可以使用MultipartHttpServletRequest对象获取上传的文件。以下是代码示例:
```java
@PostMapping("/upload")
public String upload(MultipartHttpServletRequest request) throws IOException {
// 获取上传的文件
MultipartFile file = request.getFile("file");
if (file != null) {
// 保存文件到本地
File localFile = new File("/path/to/save/file");
file.transferTo(localFile);
return "success";
} else {
return "fail";
}
}
```
阅读全文