使用邮递员将文件发送到 Laravel API

Posted

技术标签:

【中文标题】使用邮递员将文件发送到 Laravel API【英文标题】:Send file with postman to 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。而且我得到了最新的邮递员,以及打包的应用程序。你能用上面的代码发布文件吗? 【参考方案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】:

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

【讨论】:

以上是关于使用邮递员将文件发送到 Laravel API的主要内容,如果未能解决你的问题,请参考以下文章

xamarin 发送的 Json 结尾没有数据

laravel 5.4 中的 API 验证

Laravel:如何将图像或文件发送到 API

将Postman中的API响应保存到文件中

Laravel 8:如何使用邮递员发送 JSON 格式的验证响应

使用 Alamofire API Rest 发送空数组