【问题标题】:Post data with file upload Rest使用文件上传Rest发布数据
【发布时间】:2018-10-26 12:11:10
【问题描述】:

对于我使用 symfony 构建的其余 API,我有一个带有图像的实体 Product。

我尝试使用 Postman 发布此实体并上传此文件,我使用我在许多帖子中看到的表单数据,有 Content-Type form-data/multipart 和没有。

POSTMAN

但我的文件没有出现在正文请求中。当我转储它时,我只有四个没有“url_image”的参数?

有什么问题?我该如何解决?

【问题讨论】:

  • 请将控制器代码添加到帖子中

标签: php rest symfony postman


【解决方案1】:

如果你正在做:

public function someAction(Request $request) {
    $file = $request->get('url_image');
    // or
    $file = $request->request->get('url_image');
}

那么你做错了,而是这样做:

public function someAction(Request $request) {
    /** @var \Symfony\Component\HttpFoundation\File\UploadedFile $file */
    $file = $request->files->get('url_image');
}

上传的文件不在请求正文中

【讨论】:

    【解决方案2】:

    通过上述方法上传文件时,文件内容不在请求体中,而是在请求的files参数包中。

    您可以像这样在控制器中获取它们:

    public function someControllerMethod(Request $request)
    {
       $img = $request->files->get('url_image');
    }
    

    您将获得的是 UploadedFile 的一个实例。我建议您查看文档以了解如何使用它。 您通常会移动到文件系统中的某个位置或将其作为流打开并将其发送到云存储提供商。

    干杯!

    【讨论】:

    • 嗯好的,谢谢!但是我怎样才能用我的表单验证这个文件呢?因为现在我基本上做了一个 $form->submit($request->request->all ) 来验证和持久化我的实体
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多