UploadController.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Acekyd\LaravelMP3\LaravelMP3;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\Log;
  6. use Illuminate\Support\Facades\Storage;
  7. use Intervention\Image\Facades\Image;
  8. class UploadController extends Controller
  9. {
  10. public function uploadImage(Request $request)
  11. {
  12. if ($request->hasFile('image') && $request->file('image')->isValid()) {
  13. $path = $request->get('path') ? $request->get('path') . '/' : date('Ym') . '/';
  14. //获取文件的原文件名 包括扩展名
  15. // $yuanname= $request->file('image')->getClientOriginalName();
  16. // //获取文件的扩展名
  17. $kuoname = $request->file('image')->getClientOriginalExtension();
  18. // //获取文件的类型
  19. // $type=$request->file('image')->getClientMimeType();
  20. // //获取文件的绝对路径,但是获取到的在本地不能打开
  21. $filePath = $request->file('image')->getRealPath();
  22. //要保存的文件名 时间+扩展名
  23. if (in_array($kuoname, ['jpg', 'jpeg','png'])) {
  24. $width = Image::make($filePath)->width();
  25. $height = Image::make($filePath)->height();
  26. //要保存的文件名 时间+扩展名
  27. $filename = time() . '_' . uniqid() . '.' . $kuoname;
  28. $fileurl = $filename . '?' . $width . '_' . $height;
  29. } else {
  30. //要保存的文件名 时间+扩展名
  31. $fileurl = $filename = time() . '_' . uniqid() . '.' . $kuoname;
  32. }
  33. $imageUrl = Storage::put($path . $filename, file_get_contents($filePath));
  34. if ($imageUrl) {
  35. return [
  36. 'data' => ['url' => $path . $fileurl]
  37. ];
  38. } else {
  39. return $this->response->error('图片上传失败,请重试', 500);
  40. }
  41. } else {
  42. return $this->response->error('图片上传失败,请重试', 500);
  43. }
  44. }
  45. public function uploadStream(Request $request)
  46. {
  47. if ($request->hasFile('image') && $request->file('image')->isValid()) {
  48. $path = $request->get('path') ? $request->get('path') . '/' : date('Ym') . '/';
  49. //获取文件的扩展名
  50. $kuoname = $request->file('image')->getClientOriginalExtension();
  51. //获取文件的绝对路径,但是获取到的在本地不能打开
  52. $filePath = $request->file('image')->getRealPath();
  53. //要保存的文件名 时间+扩展名
  54. $fileurl = $filename = time() . '_' . uniqid() . '.' . $kuoname;
  55. $imageUrl = Storage::put($path . $filename, file_get_contents($filePath));
  56. if ($imageUrl) {
  57. return [
  58. 'data' => ['url' => $path . $fileurl]
  59. ];
  60. } else {
  61. return $this->response->error('上传失败,请重试', 500);
  62. }
  63. } else {
  64. return $this->response->error('上传失败,请重试', 500);
  65. }
  66. }
  67. public function uploadImages(Request $request)
  68. {
  69. $path = $request->get('path') ? $request->get('path') . '/' : date('Ym') . '/';
  70. $files = $request->file('image');
  71. $fileCount = count($files);
  72. $urls = [];
  73. for ($i = 0; $i < $fileCount; $i++) {
  74. $kuoname = $files[$i]->getClientOriginalExtension();
  75. $filePath = $files[$i]->getRealPath();
  76. //要保存的文件名 时间+扩展名
  77. if (in_array($kuoname, ['jpg', 'jpeg', 'png'])) {
  78. $width = Image::make($filePath)->width();
  79. $height = Image::make($filePath)->height();
  80. //要保存的文件名 时间+扩展名
  81. //$filename = time() . '_' . uniqid() . '*' . $width . '_' . $height . '.' . $kuoname;
  82. $filename = time() . '_' . uniqid() . '.' . $kuoname;
  83. $fileurl = time() . '_' . uniqid() . '.' . $kuoname . '?' . $width . '_' . $height;
  84. } else {
  85. //要保存的文件名 时间+扩展名
  86. $fileurl = $filename = time() . '_' . uniqid() . '.' . $kuoname;
  87. }
  88. $imageUrl = Storage::put($path . $filename, file_get_contents($filePath));
  89. if ($imageUrl) {
  90. array_push($urls, $path . $fileurl);
  91. } else {
  92. Log::debug('文件上传失败。' . $filename);
  93. }
  94. }
  95. if ($urls) {
  96. return [
  97. 'data' => $urls
  98. ];
  99. } else {
  100. return $this->response->error('图片上传失败,请重试', 500);
  101. }
  102. }
  103. public function uploadMp3(Request $request)
  104. {
  105. if ($request->hasFile('mp3') && $request->file('mp3')->isValid()) {
  106. $path = 'music' . '/';
  107. //获取文件的扩展名
  108. $kuoname = $request->file('mp3')->getClientOriginalExtension();
  109. //获取文件的绝对路径,但是获取到的在本地不能打开
  110. $filePath = $request->file('mp3')->getRealPath();
  111. //计算音乐时长
  112. $laravel_mp3 = new LaravelMP3();
  113. $details = $laravel_mp3->getDuration($filePath);
  114. Log::debug('文件类型' . $kuoname);
  115. //要保存的文件名 时间+扩展名
  116. $filename = time() . '_' . uniqid() . '*' . $kuoname;
  117. $mp3Url = Storage::put($path . $filename, file_get_contents($filePath));
  118. Log::debug('upload_url:' . $mp3Url);
  119. if ($mp3Url) {
  120. $data = ['url' => config('customer.chxq_oss_url') . $path . $filename, 'music_duration' => $details];
  121. return $data;
  122. } else {
  123. return 'mp3上传失败,请重试';
  124. }
  125. } else {
  126. return '仅支持mp3上传,请重试';
  127. }
  128. }
  129. }