I dont know if this helps but I did something like this below.  It could be
completely wrong but it seems to work for us.  The incoming argument is the
HttpServletRequest and we pump that through Apache FileUploader...

    @POST
    @Operation(
        summary = "Upload content",
        description = "Upload file(s) to content",
        parameters = {},
        security = {},
        requestBody = @RequestBody(
            content = @Content(
                mediaType = MULTIPART_FORM_DATA,
                schema = @Schema(implementation = MultipartRequest.class))),
        responses = {
            @ApiResponse(
                responseCode = "200",
                description = "The uploaded files",
                content = @Content(
                    mediaType = APPLICATION_JSON,
                    array = @ArraySchema(
                        schema = @Schema(implementation =
FileResult.class)))),
    @Produces(APPLICATION_JSON)
    @Consumes(MULTIPART_FORM_DATA)

And creating this to hold my multipart data.

/**
 * Multipart Content
 * <p>
 * Used for OpenAPI to mimic a multipart request and/or be used in an array
of
 * multipart files.
 */
public final class MultipartRequest
{
    /**
     * The array of files in OpenAPI format to be upploaded
     */
    //@ArraySchema(
    //    schema = @Schema(type = "string", format = "binary", description
= "File"))
    //public List<String> file;

    @Schema(type = "string", format = "binary", description = "File")
    public String file;
}


On Thu, Nov 14, 2019 at 3:34 PM Oliver Schweitzer
<oschweit...@me.com.invalid> wrote:

> Hi,
>
> The code below works wonderful in a Karaf Container using CXF (explicit
> via JAXRSServerFactoryBean and also implicitly via Jax-RS whiteboard).
>
> Actually, it is the only way I got Multipart to work and at the same time
> generate sensible Swagger/OpenAPI 2.0 Api description.
>
> Now I’m stuck replicating this same behaviour for OpenAPI 3.0 - the
> Annotations and their semantics have changed, and I can’t get swagger-core
> to generate the right schema.
>
> Has someone on this mailing list encountered the same challenge? Or, if
> not, can point me to a forum where people have?
>
> Best regards,
>
> Oliver
>
> ----------------
>
> import javax.ws.rs.*;
> import javax.ws.rs.core.*;
>
> import org.apache.cxf.jaxrs.ext.multipart.Multipart;
>
> import io.swagger.annotations.Api;
> import io.swagger.annotations.ApiImplicitParam;
> import io.swagger.annotations.ApiImplicitParams;
> import io.swagger.annotations.ApiOperation;
> import io.swagger.annotations.ApiParam;
>
>
> @Path("/upload")
> @POST
> @Produces(MediaType.APPLICATION_JSON)
> @ApiOperation(value = "file upload", response = Result.class)
> @ApiImplicitParams({@ApiImplicitParam(name = "mode", value =
>         "mode", required = true, dataType = "string", paramType = "form"),
>                     @ApiImplicitParam(name = "file", value = "file",
>                                       required = true, dataType =
> "java.io.File", paramType = "form"),
>                    })
> @Consumes(MediaType.MULTIPART_FORM_DATA)
>
> public Response uploadFile(
>     @ApiParam(hidden = true)
>     @Multipart(value = "mode",
>                required = true)
>     String mode,
>     @ApiParam(hidden = true)
>     @Multipart(value = "file",
>                required = true)
>     InputStream file) {
>         Result result = doStuff(mode,file);
>     return Response.ok(serialize(result)).build();
> }



-- 


*KimJohn Quinn**k...@logicdrop.com <k...@logicdrop.com>*


*Logicdrop*22620 Woodward Avenue - Suite D
Ferndale, MI 48220
*O* 888.229.2817
*M* 248.882.0728
*www.logicdrop.com <http://www.logicdrop.com/>*

Reply via email to