【问题标题】:Send file with postman to Laravel API使用邮递员将文件发送到 Laravel API
【发布时间】:2015-03-21 12:41:36
【问题描述】:

当我尝试使用邮递员向我的 Laravel api 发送文件时,结果总是返回“NULL”

我的控制器如下所示:

public function store()
{
    $file = Input::file('image');
    var_dump($file);


}

还有我的路线文件:

Route::post('test', 'TestController@store');

但是当我尝试在邮递员中发送图像时,我得到的结果是“NULL”

我的邮递员配置是:

http://app.dev/test (POST)

Content-Type - multipart/form-data

表单数据

图片 - test.jpg

我错过了什么吗?

我检查了 php.ini 以便有足够的空间上传

我的问题与这篇文章中的完全一样: Correct Postman Settings when testing file uploading in Laravel 4?

但他的解决方案没有奏效。我已经检查了我的 php.ini

如果我使用资源控制器并从浏览器输入 url,则下面的代码可以工作:

public function store()
{
    $input = Input::all();

    $path = public_path() .'/images/123/';

    $inpusqt = Input::file('images');

    $i = 1;
    File::exists($path) or File::makeDirectory($path);

    foreach($inpusqt as $file) {
        $filExt = $file->getClientOriginalExtension();
        $ext = '.' . $filExt;

        $lol = Image::make($file->getRealPath());

        $lol->heighten(258)->save($path . $i . $ext);
        $i++; //increment value to give each image a uniqe name
    }
}

但是,如果我将路由修改为例如 post::(controller@store) 并使用邮递员发送图像,则会收到一条错误消息,提示“未定义索引:图像”

【问题讨论】:

  • 没有错误,只有“NULL”响应 不能使用 getRealPath() 等,因为没有上传任何内容
  • 你没有返回任何东西。你只是 var_dump'ing 数据。尝试返回 json。
  • 你能从浏览器访问那个控制器吗?也许它抛出了一个异常并且你已经关闭了调试。
  • 如果没有最新版本请升级邮递员
  • 我试过 json,同样返回 NULL。而且我得到了最新的邮递员,以及打包的应用程序。你能用上面的代码发布文件吗?

标签: php mysql file api laravel


【解决方案1】:

如果您想使用 Postman 和 Laravel 测试文件上传,只需删除 Postman 中的 Content-Type 标头设置即可。

【讨论】:

  • 谢谢,这有帮助。
  • 谢谢!!我什至无法从请求中获取任何数据。
  • 你能告诉我Image文件Image::make($file->getRealPath());里有什么
  • @Sinto 我只能假设他使用的是image.intervention.io,所以它是Image 类的一个实例。
  • 但是如何为上传的文件指定名称?原因 Laravel 需要名称为 Image 的文件数组
【解决方案2】:

在 PostMan 中选择“form-data”时,会自动设置标题“Content-Type: application/x-www-form-urlencoded”。

我刚刚删除了标题,一切正常:)

【讨论】:

    【解决方案3】:

    如果您发送上传文件表单 Postman 的请求,您应该在 postman 中还包含一个标头 Content-Type: multipart/form-data 并选择 form-data,该字段应该是 file 而不是 text 。还要小心,只有使用 POST 才能使用 PUT 和 PATCH 进行文件上传,但它不起作用。

    【讨论】:

    • 谢谢!我有错误的 PUT 请求。现在我发送 POST 请求并将_method:PUT 添加到表单数据中,现在可以发送文件了!
    【解决方案4】:

    可能的答案 Could not submit form-data through postman put request

    标头:Content-Type application/x-www-form-urlencoded

    return $request->file('avatar');
    

    图片示例

    【讨论】:

      【解决方案5】:

      我刚刚删除了标题字段并为我工作

      【讨论】:

        猜你喜欢
        • 2016-09-10
        • 2020-06-23
        • 2020-04-07
        • 2020-10-29
        • 2022-01-25
        • 1970-01-01
        • 1970-01-01
        • 2017-08-17
        • 2020-07-11
        相关资源
        最近更新 更多