使用邮递员将文件发送到 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的主要内容,如果未能解决你的问题,请参考以下文章