UploadController.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Facade\TableName;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\DB;
  6. class UploadController
  7. {
  8. public function uploadFile(Request $request)
  9. {
  10. $UserID = $request->input('UserID');
  11. $base64img = $request->input('image');
  12. if (empty($UserID)) return apiReturnFail(__('messages.api.upload.missing_user_info'));
  13. if (empty($base64img)) return apiReturnFail(__('messages.api.upload.empty_image'));
  14. $base64img = str_replace(' ', '+', $base64img);
  15. $image_patern = '/^(data:\s*image\/(\w+);base64,)/';
  16. $ext = '';
  17. if (preg_match($image_patern, $base64img, $result)) $ext = $result[2];
  18. if (!in_array($ext, ['jpg', 'jpeg', 'gif', 'png', 'bmp'])) return apiReturnFail(__('messages.api.upload.incorrect_file_type'));
  19. //接收base64数据
  20. $image = $base64img;
  21. //设置图片名称
  22. $imageName = uniqid() . '.' . $ext;
  23. //判断是否有逗号 如果有就截取后半部分
  24. if (strstr($image, ",")) {
  25. $image = explode(',', $image);
  26. $image = $image[1];
  27. }
  28. //设置图片保存路径
  29. $path = 'uploads' . DIRECTORY_SEPARATOR . "api" . DIRECTORY_SEPARATOR . date('Ymd');
  30. //判断目录是否存在 不存在就创建
  31. if (!is_dir($path)) {
  32. mkdir($path, 0777, true);
  33. }
  34. //图片路径
  35. $imageSrc = $path . "/" . $imageName;
  36. //生成文件夹和图片
  37. $r = file_put_contents($imageSrc, base64_decode($image));
  38. if (!$r) {
  39. return apiReturnFail(__('messages.api.upload.upload_failed'));
  40. } else {
  41. unlink(DB::connection('write')->table(TableName::agent() . 'UserHeadAuditoria')->where('UserID',$UserID)->value('Image'));
  42. $imageSrc = str_replace("./", "/", $imageSrc);
  43. DB::table(TableName::agent() . 'UserHeadAuditoria')
  44. ->updateOrInsert(['UserID' => $UserID], ['UserID' => $UserID, 'Image' => $imageSrc, 'UpdateTime' => now(),'Status'=>0]);
  45. return apiReturnSuc($imageSrc);
  46. }
  47. }
  48. }