当前位置: 首页 > 知识库问答 >
问题:

带空参数的角4多部分形式

晋越彬
2023-03-14

你好,伙计们,我有一个问题,在一个角4.3+Spring引导Rest应用程序上张贴多部分表单-数据。无论我在Java方法中放入什么参数,我都会得到消息“Required request part'arquivo'is not present”或“Required request parameter'arquivo'is not present”。

<form (ngSubmit)="onFormSubmit()" [formGroup]="formulario" enctype="multipart/form-data">
          <div formGroupName="sumarizacao">
            <div class="row">

       <!-- Nome da sumarização -->
              <div class="form-group col-sm-3">
                <label for="summarizationName">*Nome da Sumarização</label>
                <input type="text" class="form-control" id="summarizationName" formControlName="nome" placeholder="Nome">
                <div *ngIf="formulario.controls['sumarizacao'].controls['nome'].errors && formulario.controls['sumarizacao'].controls['nome'].dirty"><small> Campo obrigatório</small></div>
              </div>

  <!-- control file upload -->
            <div class="form-group col-sm-9">
              <label class="form-control-label custom-submit" id="controlFileLabel" for="envio-arquivo-ctl">Arquivo de controle</label>
              <i class="fa fa-check-circle" aria-hidden="true" *ngIf="file != null"></i>
              <div>
                <input type="file" id="envio-arquivo-ctl" (change)="fileEvent($event)" accept=".ctl">
                <div *ngIf="file != null"><p>{{file.name}}</p></div>
                <div *ngIf="formulario.controls['arquivo'].name != '' && formulario.controls['arquivo'].dirty"><small> Campo obrigatório</small></div>
              </div>
            </div>
         </div>
          <button type="submit" class="btn btn-sm btn-primary" [disabled]="formulario.invalid"><i class="fa fa-check" aria-hidden="true"></i> Gravar</button>
          <button type="reset" class="btn btn-sm btn-danger"><i class="fa fa-ban"></i> Resetar</button>
        </form>
  salvarSumarizacao(formGroup: FormGroup): Observable<Sumarizacao> {
    let formData = new FormData();
    let header = new HttpHeaders().set('enctype', 'multipart/form-data').set('Accept', 'application/json');
    formData.append('sumarizacao', JSON.stringify(formGroup.value.sumarizacao));
    if (formGroup.value.arquivo !== '') {
      formData.append('arquivo', formGroup.value.arquivo, formGroup.value.arquivo.name);
    }
    return this.http.post(URIConstantes.SUMARIZACAO, formData, { headers: header })
      .map(resp => resp as Sumarizacao)
      .catch(this.handleErrorObservable)
  }
 @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA)
    @Produces({MediaType.APPLICATION_JSON})
    public Response incluir(@RequestParam(value="arquivo") MultipartFile arquivo, @RequestParam(value = "sumarizacao") Sumarizacao sumarizacao, HttpServletRequest request) {
        ObjectMapper mapper = new ObjectMapper();
        //sumarizacao = mapper.readValue(request.getParameter("sumarizacao"), Sumarizacao.class);
        //Sumarizacao sumRetorno = sumarizacaoService.incluir(sumarizacao, arquivo.getInputStream());
        RetornoResourceDTO<Sumarizacao> retornoResourceDTO = RetornoResourceDTO.<Sumarizacao> criarComResultado(new Sumarizacao());
        adicionarMensagemSucesso(retornoResourceDTO);
        return Response.ok(retornoResourceDTO).build();

    }

共有1个答案

班宏毅
2023-03-14

我使用MultipartTtpServletRequest参数和CommonMultipartResolver bean获得了它。

    @Bean
    public CommonsMultipartResolver commonsMultipartResolver() {
        final CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
        commonsMultipartResolver.setMaxUploadSize(-1);
        return commonsMultipartResolver;
    }


@PostMapping(consumes = MediaType.MULTIPART_FORM_DATA, produces = MediaType.APPLICATION_JSON)
    public Response incluir(MultipartHttpServletRequest http) { }

我使用Spring Boot 1.5.3、Spring Security 3.2.10和Spring Core 4.3.8

 类似资料:
  • 问题内容: 为什么直接将我作为参数传递,或者传递给我分配了 值的键 (显然)会有所不同? 换句话说,为什么(commented-out)第二个调用没有分派给? 更新: 我使用Java 1.6。我可以毫无问题地编译Hemal的代码,但是我的仍然无法编译。我看到的唯一区别是Hemal的方法是静态的,而我的不是。但是我真的不明白为什么这应该有所作为…? 更新2: 解决。我在类中有另一个方法foo(Run

  • 我正在尝试从接收包含3个参数的多部分请求: 一个 一个 我在控制器中接收到和fine,但json的所有字段都为NULL。会有什么问题吗? JSON 控制器 邮差

  • 我正在使用Azure广告与隐式流量与一个角4应用程序。我的NG4应用程序使用PathLocationStrategy路由,这样它就可以利用干净的URL。我的AAD身份验证请求如下所示: https://login.microsoftonline.com/xxxxx/oauth2/authorize?client_id=xxxx&response_type=id_token&redirect_uri

  • 我一直在寻找一种方法,通过新的的将查询参数传递到API调用中,但尚未找到解决方案。使用旧的模块,您可以编写如下内容。 这将导致对以下URL的API调用: 但是,新的方法没有属性,所以我想知道在哪里传递查询参数?

  • 问题内容: 我知道关于从Java执行流程有很多解决的问题,但是我无法使用提供的答案解决问题。我正在尝试从Java应用程序创建postgresql数据库备份。我使用以下代码 执行以上代码后,出现以下错误: 仅当备份文件的路径包含空格时才出现问题,否则将创建备份。我试图在文件路径中同时使用斜杠和反斜杠,但我引用了文件路径,但每次都遇到相同的错误。可以从命令提示符处执行命令。 我做错了。关于Proces

  • 在 C++ 中,空参数表可以用 void 指定或括号中不放任何东西。下列声明: void print(); 指定函数 print 不取任何参数,也不返回任何值。图 3.18 演示了 C++ 声明和使用带空参数表的函数的方法。 编程技巧 3.11 虽然函数先定义后使用时可以省略函数原型,最好也提供函数原型。提供函数原型可以避免代码使用时受到函数定义顺序的限制。(这个顺序可能随程序的演变而改变)。 /