Java 在角形弹簧启动中上载图像时没有类似的错误
我将在angular和spring boot中保存一个图像,并得到一个“NoTouchElementException”错误。 我的上传服务Java 在角形弹簧启动中上载图像时没有类似的错误,java,angular,typescript,spring-boot,angular10,Java,Angular,Typescript,Spring Boot,Angular10,我将在angular和spring boot中保存一个图像,并得到一个“NoTouchElementException”错误。 我的上传服务 filesToUpload: Array<File>; constructor() { this.filesToUpload = []; } upload(bookId: number) { this.makeFileRequest("http://myurl/add/image?id="+d
filesToUpload: Array<File>;
constructor() {
this.filesToUpload = [];
}
upload(bookId: number) {
this.makeFileRequest("http://myurl/add/image?id="+dataId, [], this.filesToUpload).then((result) => {
console.log(result);
}, (error) => {
console.log(error);
});
}
fileChangeEvent(fileInput: any) {
this.filesToUpload = <Array<File>> fileInput.target.files;
}
makeFileRequest(url:string, params:Array<string>, files:Array<File>) {
return new Promise((resolve, reject) => {
var formData:any = new FormData();
var xhr = new XMLHttpRequest();
for(var i=0; i<files.length;i++) {
formData.append("uploads[]", files[i], files[i].name);
}
xhr.onreadystatechange = function() {
if(xhr.readyState == 4) {
if(xhr.status==200) {
console.log("image uploaded successfully!");
} else {
reject(xhr.response);
}
}
}
xhr.open("POST", url, true);
xhr.setRequestHeader("x-auth-token", localStorage.getItem("xAuthToken"));
xhr.send(formData);
});
}
我的上传控制器
@RequestMapping(value = "/add/image", method = RequestMethod.POST)
public ResponseEntity upload(@RequestParam("id") Long id, HttpServletResponse response,
HttpServletRequest request) {
try {
Book book = bookService.findOne(id);
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Iterator<String> it = multipartRequest.getFileNames(); //my error is here, I got an empty iterator
MultipartFile multipartFile = multipartRequest.getFile(it.next());
String fileName = id + ".jpg";
byte[] bytes = multipartFile.getBytes();
BufferedOutputStream stream = new BufferedOutputStream(
new FileOutputStream(new File("src/main/resources/static/image/book/" + fileName)));
stream.write(bytes);
stream.close();
return new ResponseEntity("Upload Success!", HttpStatus.OK);
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity("Upload failed!", HttpStatus.BAD_REQUEST);
}
}
@RequestMapping(value=“/add/image”,method=RequestMethod.POST)
公共响应性上载(@RequestParam(“id”)长id,HttpServletResponse,
HttpServletRequest(请求){
试一试{
Book Book=bookService.findOne(id);
MultipartTTpServletRequest multipartRequest=(MultipartTTpServletRequest)请求;
迭代器it=multipartRequest.getFileNames();//我的错误在这里,我得到了一个空迭代器
MultipartFile MultipartFile=multipartRequest.getFile(it.next());
字符串文件名=id+“.jpg”;
byte[]bytes=multipartFile.getBytes();
BufferedOutputStream=新的BufferedOutputStream(
新文件输出流(新文件(“src/main/resources/static/image/book/”+fileName));
stream.write(字节);
stream.close();
返回新的响应属性(“上传成功!”,HttpStatus.OK);
}捕获(例外e){
e、 printStackTrace();
返回新的响应属性(“上载失败!”,HttpStatus.BAD_请求);
}
}
我在java.util.LinkedHashMap$LinkedHashInterator.nextNode(LinkedHashMap.java:721)处发现了这个错误
我验证了代码debbug,并在数据库中获得了元素,但当我使用MultipartFile MultipartFile=multipartRequest.getFile(it.next())时,迭代器中的元素为空
@RequestMapping(value = "/add/image", method = RequestMethod.POST)
public ResponseEntity upload(@RequestParam("id") Long id, HttpServletResponse response,
HttpServletRequest request) {
try {
Book book = bookService.findOne(id);
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Iterator<String> it = multipartRequest.getFileNames(); //my error is here, I got an empty iterator
MultipartFile multipartFile = multipartRequest.getFile(it.next());
String fileName = id + ".jpg";
byte[] bytes = multipartFile.getBytes();
BufferedOutputStream stream = new BufferedOutputStream(
new FileOutputStream(new File("src/main/resources/static/image/book/" + fileName)));
stream.write(bytes);
stream.close();
return new ResponseEntity("Upload Success!", HttpStatus.OK);
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity("Upload failed!", HttpStatus.BAD_REQUEST);
}
}