gpt4 book ai didi

java - axios、Spring boot 和 base64 的问题

转载 作者:行者123 更新时间:2023-12-02 10:27:13 34 4
gpt4 key购买 nike

我正在尝试从我的 React Native 应用程序向我的 Spring Boot 应用程序发送帖子,但收到此错误:

java.lang.IllegalArgumentException: Illegal base64 character a

react native 代码:

axios({
method: 'post',
url: 'myip',
data: {
teste: photo.image.base64,
},
headers: {'content-type': 'application/json'},
})
.then(function (response) {
console.log("works");
})
.catch(function (error) {
console.log(error);
});

Spring 启动代码

@RequestMapping(value = "/", method = RequestMethod.POST)
public Map<String, String> upload (@RequestBody Map<String, String> payload) {
byte[] imageByte;
String encodedString = payload.get("teste");
String fileName = (new Date()).toString();
fileName = fileName.replace(' ', '_');
fileName = fileName.replace(':', '_');

try {
imageByte = Base64.getDecoder().decode(encodedString.toString());
FileUtils.writeByteArrayToFile(new File(fileName + ".png"), imageByte);
} catch (Exception e) {
e.printStackTrace();
System.out.println("error");
}
return response;
}

编辑:堆栈跟踪 -

 java.lang.IllegalArgumentException: Illegal base64 character a
at java.util.Base64$Decoder.decode0(Unknown Source)
at java.util.Base64$Decoder.decode(Unknown Source)
at java.util.Base64$Decoder.decode(Unknown Source)
at com.pac.upload.UploadController.login(UploadController.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

我看不到我错过了什么。有人可以帮助我吗?提前致谢!

最佳答案

这是我使用 Axios 上传图像的示例。

服务器:

@PostMapping("/{businessId}/gallery")
public Object singleImageUpload(@RequestParam("newImage") MultipartFile file) {
if (file.isEmpty()) {
return new GeneralResponse(ErrorsEnum.INVALID_IMAGE);
}
try {
Business business = getUserBusinessLogged();
byte[] bytes = file.getBytes();

...

return new GeneralResponse(ErrorsEnum.OK);
} catch (IOException e) {
log.log(Level.SEVERE, "Error saving file", e);
return new GeneralResponse(ErrorsEnum.SAVE_FAILED, "Problems saving file.");
} catch (ControlledException ex) {
return new GeneralResponse(ErrorsEnum.SAVE_FAILED, ex.getMessage());
}
}

Axios 客户端:

const postGalleryImageRequest = async (sessionToken, businessId, image) => {
const data = new FormData();
data.append('newImage', image);
const result = await api.post('business/' + businessId + '/gallery', data, {
headers: {
Authorization: sessionToken,
'Content-Type': 'multipart/form-data',
}
}) .then((response) => {
return response.data
})
.catch(error => {
....
})
return result;
}

Axios 设置:

import axios from 'axios';

export const baseUrl = 'https://host:port/api/';

export default
axios.create({
baseURL: baseUrl,
timeout: 30000
});

关于java - axios、Spring boot 和 base64 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53862246/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com