<?php

namespace App\Http\Controllers;

use Acekyd\LaravelMP3\LaravelMP3;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;
use Intervention\Image\Facades\Image;

class UploadController extends Controller
{
    public function uploadImage(Request $request)
    {
        if ($request->hasFile('image') && $request->file('image')->isValid()) {
            $path = $request->get('path') ? $request->get('path') . '/' : date('Ym') . '/';
            //获取文件的原文件名 包括扩展名
//            $yuanname= $request->file('image')->getClientOriginalName();
//            //获取文件的扩展名
            $kuoname = $request->file('image')->getClientOriginalExtension();
//            //获取文件的类型
//            $type=$request->file('image')->getClientMimeType();
//            //获取文件的绝对路径,但是获取到的在本地不能打开
            $filePath = $request->file('image')->getRealPath();
            //要保存的文件名 时间+扩展名
            if (in_array($kuoname, ['jpg', 'jpeg','png'])) {
                $width = Image::make($filePath)->width();
                $height = Image::make($filePath)->height();
                //要保存的文件名 时间+扩展名
                $filename = time() . '_' . uniqid() . '.' . $kuoname;
                $fileurl = $filename . '?' . $width . '_' . $height;
            } else {
                //要保存的文件名 时间+扩展名
                $fileurl = $filename = time() . '_' . uniqid() . '.' . $kuoname;
            }
            $imageUrl = Storage::put($path . $filename, file_get_contents($filePath));
            if ($imageUrl) {
                return [
                    'data' => ['url' => $path . $fileurl]
                ];
            } else {
                return $this->response->error('图片上传失败,请重试', 500);
            }
        } else {
            return $this->response->error('图片上传失败,请重试', 500);
        }
    }

    public function uploadImages(Request $request)
    {
        $path = $request->get('path') ? $request->get('path') . '/' : date('Ym') . '/';
        $files = $request->file('image');
        $fileCount = count($files);
        $urls = [];
        for ($i = 0; $i < $fileCount; $i++) {
            $kuoname = $files[$i]->getClientOriginalExtension();
            $filePath = $files[$i]->getRealPath();
            //要保存的文件名 时间+扩展名
            if (in_array($kuoname, ['jpg', 'jpeg', 'png'])) {
                $width = Image::make($filePath)->width();
                $height = Image::make($filePath)->height();
                //要保存的文件名 时间+扩展名
                //$filename = time() . '_' . uniqid() . '*' . $width . '_' . $height . '.' . $kuoname;
                $filename = time() . '_' . uniqid() . '.' . $kuoname;
                $fileurl = time() . '_' . uniqid() . '.' . $kuoname . '?' . $width . '_' . $height;
            } else {
                //要保存的文件名 时间+扩展名
                $fileurl = $filename = time() . '_' . uniqid() . '.' . $kuoname;
            }
            $imageUrl = Storage::put($path . $filename, file_get_contents($filePath));
            if ($imageUrl) {
                array_push($urls, $path . $fileurl);
            } else {
                Log::debug('文件上传失败。' . $filename);
            }
        }
        if ($urls) {
            return [
                'data' => $urls
            ];
        } else {
            return $this->response->error('图片上传失败,请重试', 500);
        }

    }

    public function uploadMp3(Request $request)
    {
        if ($request->hasFile('mp3') && $request->file('mp3')->isValid()) {
            $path = 'music' . '/';
            //获取文件的扩展名
            $kuoname = $request->file('mp3')->getClientOriginalExtension();

            //获取文件的绝对路径,但是获取到的在本地不能打开
            $filePath = $request->file('mp3')->getRealPath();
            //计算音乐时长
            $laravel_mp3 = new LaravelMP3();
            $details = $laravel_mp3->getDuration($filePath);
            Log::debug('文件类型' . $kuoname);
            //要保存的文件名 时间+扩展名
            $filename = time() . '_' . uniqid() . '*' . $kuoname;

            $mp3Url = Storage::put($path . $filename, file_get_contents($filePath));
            Log::debug('upload_url:' . $mp3Url);
            if ($mp3Url) {
                $data = ['url' => config('customer.chxq_oss_url') . $path . $filename, 'music_duration' => $details];
                return $data;
            } else {
                return 'mp3上传失败,请重试';
            }
        } else {
            return '仅支持mp3上传,请重试';
        }
    }
}