从Angular 8向Spring Boot应用程序发送文件(图像)
我想从angular 8应用程序向spring引导服务器发送一个文件 我尝试了Spring-MultiPartFile、HttpServletRequest和其他一些方法,但没有成功 我希望有人能告诉我如何在春天得到文件。。。如果我的angular应用程序需要一些更改 角度8从Angular 8向Spring Boot应用程序发送文件(图像),angular,spring-boot,Angular,Spring Boot,我想从angular 8应用程序向spring引导服务器发送一个文件 我尝试了Spring-MultiPartFile、HttpServletRequest和其他一些方法,但没有成功 我希望有人能告诉我如何在春天得到文件。。。如果我的angular应用程序需要一些更改 角度8 <input ngModel type="file" name="file" (change)="fileChange($event)" class="form-control-file" id="exampleIn
<input ngModel type="file" name="file" (change)="fileChange($event)" class="form-control-file" id="exampleInputFile" aria-describedby="fileHelp" required>
当我发送文件时-在组件中
onFormSubmitMentor() {
const dataImage = new FormData();
dataImage.append('myFile', this.imageMentor, this.imageMentor.name);
this.useDetailsService.addMentor(dataImage).subscribe(data => {
}, Error => {
if (Error.error.error === 'Unauthorized') {
alert('Unauthorized');
}
});
}
服务
addMentor(dataImage) {
const token = JSON.parse(localStorage.getItem('currentUser'));
let headers = new HttpHeaders();
headers = headers.append('Authorization', 'Bearer ' + token.token);
headers = headers.append('Content-type', 'application/json');
console.log(dataImage);
return this.http
.post(
'http://localhost:8080/register/mentor',{file: dataImage}, {headers, responseType: 'text'}
).pipe(map((response: any) => {
console.log(response);
return response;
}), catchError((err: any) => {
console.log(err);
return throwError(err);
}));
}
弹簧靴
@RequestMapping(value = "/register/mentor", method = RequestMethod.POST,consumes = "application/json")
@ResponseBody
public ResponseEntity<?> registerMentor(HttpServletRequest request) throws Exception {
// connectionValidation.isAdmin();
StringBuilder builder = new StringBuilder();
try (BufferedReader in = request.getReader()) {
char[] buf = new char[4096];
for (int len; (len = in.read(buf)) > 0; )
builder.append(buf, 0, len);
}
String requestBody = builder.toString();
return saveMentorUser(new Mentor());
// return saveMentorUser(mentor);
}
@RequestMapping(value=“/register/mentor”,method=RequestMethod.POST,consumes=“application/json”)
@应答器
公共响应属性注册器(HttpServletRequest请求)引发异常{
//connectionValidation.isAdmin();
StringBuilder=新的StringBuilder();
try(BufferedReader in=request.getReader()){
char[]buf=新字符[4096];
对于(int len;(len=in.read(buf))>0;)
builder.append(buf,0,len);
}
字符串requestBody=builder.toString();
返回saveMentorUser(new Mentor());
//返回用户(导师);
}
我试过这个
标题内容被设置为JSON,这可能必须设置为表单数据作为传递表单数据
headers=headers.append('Content-type','multipart/formdata')代码>我查看了Heroku CLI,我重新认识到这不是cors问题,但是,我在spring中的一个函数抛出了一个连接到Mongo的错误,但我猜Heroku没有理解它,并用cors问题进行了响应
@RequestMapping(value = "/register/mentor", method = RequestMethod.POST,consumes = "application/json")
@ResponseBody
public ResponseEntity<?> registerMentor(HttpServletRequest request) throws Exception {
// connectionValidation.isAdmin();
StringBuilder builder = new StringBuilder();
try (BufferedReader in = request.getReader()) {
char[] buf = new char[4096];
for (int len; (len = in.read(buf)) > 0; )
builder.append(buf, 0, len);
}
String requestBody = builder.toString();
return saveMentorUser(new Mentor());
// return saveMentorUser(mentor);
}