在 POSTMAN 上使用 PUT 方法上传文件
Posted
技术标签:
【中文标题】在 POSTMAN 上使用 PUT 方法上传文件【英文标题】:Upload a file with PUT method on POSTMAN 【发布时间】:2019-06-17 04:01:43 【问题描述】:您好,当我尝试在邮递员中更新图像时出现错误
我的控制器
$validator = Validator::make($request->all(), [
'category_id'=> 'required',
'product_name'=> 'required',
'product_description'=> 'required',
'product_img'=> 'required'
] );
if ($validator -> fails())
return $this->sendError('error validation', $validator->errors());
$product = Product::findOrFail($id) ;
$product->category_id = $request->input('category_id');
$product->subcat_id = $request->input('subcat_id');
$product->product_name = $request->input('product_name');
$product->product_description = $request->input('product_description');
$product->product_properties = $request->input('product_properties');
$product->product_img = $request->file('product_img')->store('images');
$product->product_pdf = $request->file('product_pdf')->store('files');
if($product->update())
return $this->sendResponse($product->toArray() , 'Product Updated Succesfully');
我的邮递员行
"product_img":"Downloads/screencapture-file-C-Users-gkpro-Desktop-ui-Semantic-UI-master-examples-navbar-html-2019-01-03-20_31_47.png"
我收到这个错误
在 null 上调用成员函数 store()
【问题讨论】:
请向我们展示整个控制器。还要添加一个 dd($request->all());在您的更新中作为控制器的第一行并在此处添加结果 @Indra 我更新了我的控制器但 dd($request->all()) 返回空 @Indra 问题是我想在 postman 中使用 json 更新图像,而在 post 方法中我使用表单数据,但我不能通过 put 方法使用表单数据 从技术上讲,整个方法是错误的,因为图像应该单独处理,有一个单独的表、模型、控制器并存储在一个存储桶中,但是由于您这样做,您实际上无法上传图片。但是,您可以更改更新方法以使用 post 并且这将起作用,但这将是一个 hack。并且验证应该在一个单独的请求文件中完成。 【参考方案1】:如果你想使用表单数据通过 PUT 方法上传图片,这里的窍门,
在表单数据中添加_method: PUT
【讨论】:
如果你使用PUT方法你不能使用form-data,你必须使用x-www-form-urlencoded。你试过我的解决方案了吗?以上是关于在 POSTMAN 上使用 PUT 方法上传文件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JMeter 使用 REST API Put 方法上传文件