Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 上传文件,角度弹簧启动_Java_Angular_Spring - Fatal编程技术网

Java 上传文件,角度弹簧启动

Java 上传文件,角度弹簧启动,java,angular,spring,Java,Angular,Spring,我需要上传文件使用角度和弹簧启动 角度服务: const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json;multi-part/form-data'}) }; addProduct(productRequest: ProductRequest, creator: string, tradeReference: string, selectedImage: File)

我需要上传文件使用角度和弹簧启动

角度服务:

 const httpOptions = {
      headers: new HttpHeaders({ 'Content-Type': 'application/json;multi-part/form-data'})
    };

addProduct(productRequest: ProductRequest, creator: string, tradeReference: string, selectedImage: File) {

    const trimCreator = creator.trim();
    const trimTradeReference = tradeReference.trim();   

    const formData =  new FormData();
    formData.append('images', selectedImage);


    return this.http.post<any>(baseUrl + '/addProduct', {formData, productRequest, trimCreator, trimTradeReference} , httpOptions)
      .pipe(
        catchError(this.handleError)
      );
  }
错误:

{“时间戳”:“2020-04-23T13:35:03.114+0000”,“状态”:500,“错误”:“内部” 服务器错误,“消息”:“当前请求不是多部分 请求“,”跟踪“:”org.springframework.web.multipart.MultipartException: 当前请求不是多部分请求\r\n\t org.springframework.web.servlet.mvc.method.annotation.RequestPartMethodArgumentResolver.resolveArgument(RequestPartMethodArgumentResolver.java:158)\r\n\t ,“路径”:“/api/trader/addProduct”}

我试着像这样更新PostMapping

@PostMapping(value=“/”addProduct”),消耗= {MediaType.MULTIPART\u FORM\u DATA\u VALUE, MediaType.APPLICATION_JSON_VALUE})

我还删除了角度服务中的消耗信息和标题信息,但它不起作用

有了邮递员,一切都很好

所以我不明白为什么它不起作用

谢谢

解决方案:

//角度服务:

const options = {} as any;

addProduct(productRequest: ProductRequest, selectedImages: File[]) {

        const formData =  new FormData();        

        for (let i = 0; i < selectedImages.length; i++) {
          formData.append('images', selectedImages[i]);
        }

        Object.keys(productRequest).forEach((key) => {formData.append(key, productRequest[key]); });

        return this.http.post<any>(baseUrl + '/addProduct', formData , options)
          .pipe(
            catchError(this.handleError)
          );
      }

请注意,产品对象被拆分为参数,以避免出现“内容类型”应用程序/八位字节流“不受支持”和“内容类型”多部分/表单数据“不受支持”等错误。将“realPrice”参数类型更改为双精度,将生成“内容类型”应用程序/八位字节流“不受支持”类型的异常,它与字符串一起工作

谢谢你的回答。它对我起了作用,也学会了解决办法
const options = {} as any;

addProduct(productRequest: ProductRequest, selectedImages: File[]) {

        const formData =  new FormData();        

        for (let i = 0; i < selectedImages.length; i++) {
          formData.append('images', selectedImages[i]);
        }

        Object.keys(productRequest).forEach((key) => {formData.append(key, productRequest[key]); });

        return this.http.post<any>(baseUrl + '/addProduct', formData , options)
          .pipe(
            catchError(this.handleError)
          );
      }
 @ApiOperation(value = "add product", response = Iterable.class)
    @ApiResponses(value = { @ApiResponse(code = 200, message = "Successfully added product") })
    @PostMapping("/addProduct")
    public void addProduct(@RequestPart(value = "images")       @ApiParam(value = "images")  MultipartFile[] images,
                           @RequestPart(value = "productName")  @ApiParam(value = "productName")  String productName,
                           @RequestPart(value = "description")  @ApiParam(value = "description")  String description,
                           @RequestPart(value = "realPrice")    @ApiParam(value = "realPrice")    String realPrice,
                           @RequestPart(value = "category")     @ApiParam(value = "category")     String category,
                           @RequestPart(value = "creator")      @ApiParam(value = "creator")      String creator,
                           @RequestPart(value = "tradeReference") @ApiParam(value = "tradeReference") String tradeReference
                 ) throws Exception {

        Product p = createProduct(productName, description, Double.valueOf(realPrice), category, creator, tradeReference);
        Arrays.asList(images)
                .stream()
                .forEach(image -> uploadImages(image, p));
        traderServices.addProduct(p);
    }