如何使用php laravel将图像上传到服务器?

时间:2018-09-28 09:35:39

标签: php laravel postman image-uploading

我一直在尝试编写一个api将图像上传到服务器,但是一切都是徒劳的。 我正在使用laravel框架。并尝试了this example,但它没有用。

同样在测试POSTMAN的api时,我在Headers中传递了mutlipart / form-data。然后在Body选项卡中选择了form-data,添加了key = image,将其Text更改为File并添加了image。我测试了api,不知道为什么,但是图像请求为空。

也许我可能在POSTMAN中传递了错误信息,或者我的代码中可能存在错误信息,请提供帮助。

这是我的api代码

public function upload(Request $request){

if ($request->hasFile('image')) {
   $image = $request->file('image');
   $name = md5(time().uniqid()).".png";
   $destinationPath = base_path() . '/public/uploads/images/' . $name;

   move_uploaded_file($name, $destinationPath);

   return response()->json(['title'=>"image is uploaded"]);
   }

}

还有我的控制器代码:

Route::post('uploadImage','TestController@upload');

邮递员请求的屏幕截图。请告诉我是否在标题或正文中传递了错误的内容。

enter image description here

此外,控制台还会显示此错误Missing boundary in multipart/form-data POST data in Unknown on line 0

1 个答案:

答案 0 :(得分:1)

您可以使用核心PHP代码进行文件上传。 在我的laravel项目中,我使用以下代码上传文件。

if(isset($_FILES["image"]["type"]))
{
  $FILES = $_FILES["image"];
  $upload_dir = storage_path('app/public/document/');

  // create folder if not exists
  if (!file_exists($upload_dir)) {
    mkdir($upload_dir, 0777, true);
  }

  //Send error 
  if ($FILES['error'])
  {
    return response()->json(['error'=>'Invalid file']);
  }

  //Change file name
  $target_file = md5(time().uniqid());
  $imageFileType = pathinfo($FILES["name"],PATHINFO_EXTENSION);
  $target_file = $upload_dir.$target_file.'.'.$imageFileType;

  //Upload file
  if (move_uploaded_file($FILES["tmp_name"], $target_file))
  {
    return response()->json(['success' => 'File uploading successful']);
  }
  else
  {
    return response()->json(['error'=>'Invalid file']);
  }
}else{
 return response()->json(['error'=>'Invalid file']);
}

下面是我在函数开头打印$ _FILES时的屏幕截图 enter image description here