首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NelmioApiDocBundle将响应内容类型设置为文件

NelmioApiDocBundle将响应内容类型设置为文件
EN

Stack Overflow用户
提问于 2021-01-15 02:53:35
回答 1查看 701关注 0票数 0

我正在使用NelmioApiDocBundle 4.0来生成我的API文档。当我试图将响应类型设置为文件时,问题就开始了。我有一个从数据库获取文件并以StreamedResponse形式返回的方法:

代码语言:javascript
复制
return new StreamedResponse(function () use ($consent) {
                    fpassthru($consent);
                    exit();
                }, 200, [
                    'Content-Transfer-Encoding', 'binary',
                    'Content-Type' => 'application/pdf',
                    'Content-Disposition' => sprintf('attachment; filename="%s.pdf"', 'filename'),
                    'Content-Length' => fstat($consent)['size'],
                ]);

这段代码运行良好,并返回所请求的文件,但我无法在文档中设置适当的响应类型。我尝试了这边请,所以我的注释如下所示:

代码语言:javascript
复制
     * @OA\Response(
     *     response=200,
     *     description="My description",
     *     content="application/pdf",
     *     @OA\Schema(
     *      type="string",
     *      format="binary"
     *    )
     * )

但答复是:

代码语言:javascript
复制
Warning: Invalid argument supplied for foreach()

当我设置content属性时,问题就开始了,但是没有它,这就是结果

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-15 13:19:09

你需要把@OA\Schema放在@OA\MediaType里面

代码语言:javascript
复制
     * @OA\Response(
     *     response=200,
     *     description="My description",
     *     @OA\MediaType(
     *         mediaType="application/pdf",
     *         @OA\Schema(
     *            type="string",
     *            format="binary"
     *         )
     *     )
     * )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65729835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档