【问题标题】:Upload a file with PUT method on POSTMAN在 POSTMAN 上使用 PUT 方法上传文件
【发布时间】: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。并且验证应该在一个单独的请求文件中完成。

标签: php json laravel api postman


【解决方案1】:

如果你想使用表单数据通过 PUT 方法上传图片,这里的窍门,

在表单数据中添加_method: PUT

【讨论】:

  • 如果你使用PUT方法你不能使用form-data,你必须使用x-www-form-urlencoded。你试过我的解决方案了吗?
猜你喜欢
  • 2018-02-27
  • 2011-12-17
  • 2011-07-05
  • 2020-04-06
  • 2017-12-09
  • 2017-11-09
  • 1970-01-01
  • 2018-03-06
  • 2021-12-16
相关资源
最近更新 更多