Java 在角形弹簧启动中上载图像时没有类似的错误

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

我将在angular和spring boot中保存一个图像,并得到一个“NoTouchElementException”错误。 我的上传服务

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);
        }
    }