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

使用OpenAPI3RouterFactory和EventBus上载Vertx Web API服务文件

浦德明
2023-03-14

我正在尝试使用Vert在Rest API中上载包含其他相关数据的文件。x Web API合同定义服务接口,OpenAPI操作定义如下:-

/api/pets/{petId}/uploadImage:
post:
  summary: upload file for pet
  operationId: savePetPicture
  x-vertx-event-bus: "petstore_manager.myapp"
  parameters:
    - name: petId
      in: path
      required: true
      description: The id of the pet
      schema:
        type: string
  requestBody:
    description: image to be used as pet picture
    content:
      multipart/form-data:
        schema:
          type: object
          properties:
            profileImage:
              type: string
              format: binary
            name:
              type: string

我有一个服务接口PetStoreManagerService,其中我定义了处理此资源操作的方法

@WebApiServiceGen
public interface PetStoreManagerService {
    void savePetPicture(PetImage body, String petId, OperationRequest operationRequest,
                      Handler<AsyncResult<OperationResponse>> handler);
}

Model类定义如下

@DataObject(generateConverter = true, publicConverter = false)
public class PetImage {
  String name;
  Buffer profileImage;
}

我在我的项目中遵循了这个教程。vertx-web-api-service教程我的问题是这个PetImage类中的proileImage的类型应该是什么?我在我的服务实现类中为请求体获取null。

我找到了一些在MainVerticle类中处理操作的帖子

routerFactory.addHandlerByOperationId("savePetPicture",  routingContext -> {
Set<FileUpload> fileUploadSet = routingContext.fileUploads();
Iterator<FileUpload> fileUploadIterator = fileUploadSet.iterator();
// ...

我想知道这是否可以在服务类中处理,将请求路由到PetStoreManagerService实现类,如教程所示。

共有1个答案

屈星腾
2023-03-14

事件总线不是为处理大型有效负载而设计的(主要是因为它缺少字节流),因此您不应该尝试通过它执行文件上载。

在垂直方向上有一束线。x邮件列表我鼓励您阅读解释问题的内容:

    如果需要实现处理文件上载的OpenAPI操作,那么应该使用通常的Vert来实现它。按照此处的说明装载x Web处理程序,并按照此处的说明检索文件上载

     类似资料:
    • 我花了几个小时试图将文件上载到本地服务器文件夹,但比预期的困难,请帮助。 在我的前端下面插入文件 下面是我的控制器

    • 我想从网站上下载一份PDF。PDF需要在代码中生成,我认为这是freemarker和像iText这样的PDF生成框架的组合。还有更好的办法吗? 然而,主要的问题是,我不知道如何允许用户通过Spring控制器下载文件?

    • 我正在尝试上传一个图像。当我从本地主机上进行时,它工作得很好,但当我发布它时,它从服务器上抛出一个错误: 当我使用此代码时: 错误为: System.io.DirectoryNotFoundException:找不到路径“d:\inetpub\vhosts\xx.com\httpdocs\images\sections\developer\clientlogo\demo.png”的一部分。在sys

    • 我正在用Jersey 2.0开发表单提交服务。表单包括几个文本字段和一个文件字段。我需要提取文件、文件名、文件媒体类型和文件内容类型,并将它们保存在对象存储中。 pom。xml 表格提交请求 JVM堆大小 上载约50MB的文件时,会在名为FileBackedOutputStream7949386530699987086的目录下创建两个MD5和相似的临时文件。tmp和MIME823422976685

    • 问题内容: 嗨,我有一堆.mp3文件,我想与NSFileManager一起使用并存储在documents文件夹中。有没有一种方法可以在线下载.mp3文件,然后将其保存到documents文件夹?这就是我正在使用的本地文件。 问题答案: 编辑/更新: Xcode 11.5•Swift 5.2 原始答案 Xcode 8.3.2•Swift 3.1

    • 问题内容: 在我的Java应用程序中,我正在使用以下方法从服务器下载文件。 但是此下载非常慢。我该如何快速? 问题答案: 从Java 7开始,您可以下载具有以下内置功能的文件: 对于早期版本,从Java 1.4到Java 6的解决方案是 此代码将URL内容传输到没有任何第三方库的文件。如果仍然很慢,那您就知道这不是附加库的问题,很可能不是Java的问题。至少您在这里没有什么可以改善的。因此,您应该