<?php
setApi();
$mu = Session::get('mu');
$uid=$mu->id;
//$wid = Session::get('wid');
$admin = (new Model('user_agency'))->find($uid);
$path = './tmpImg/';
$field = 'img';
$bucketName = $admin->bucket_name;
$allowExt = ['jpg', 'jpeg', 'gif', 'ico', 'png', 'bmp'];
$request=\Lib\Request::instance();
$file_img=$request->file('img');
if(!$file_img||!$file_img->check()){
    sendError('非法文件上传');
}
// 上传到本地，拿到本地的path
if (!$_FILES[$field]) sendError('文件不存在');
$ext = explode('.', $_FILES['img']["name"]);
$ext = $ext[count($ext) - 1];
if(strtolower($ext)=='php'){
    sendError('禁止的文件后缀');
}
if (!in_array(strtolower($ext), $allowExt)) sendError('文件后缀不允许');
// 创建文件夹
try {
  mkdir($path);
} catch (Exception $e) {
  // 防止文件夹已存在
}
$md5 = md5_file($_FILES['img']['tmp_name']);
$fileName = $md5 . '.' . $ext;
$imgPath = $path . '/' . $fileName; // 文件的相对路径
if (!file_exists($imgPath)) {
  $upload = move_uploaded_file($_FILES['img']['tmp_name'], $imgPath);
  if (!$upload) sendError('上传失败，请稍后重试');
} else {
  diy_log('文件已存在');
}
$imgTruePath = str_replace('\\', '/', DOXCX_FRAME_PATH . '/pub/' . $imgPath);  // 文件在本地硬盘的路径
// 判断是否需要对接阿里OSS
if (!$admin->oss_status) {
  // 不需要则直接拼接Url得到图片path
  $is_oss = 0;
  $realUrl = getHost() . $imgPath;
} else {
  $is_oss = 1;
  // 对接阿里OSS，本地文件上传到OSS，得到云地址
  require_once DOXCX_FRAME_PATH . "/fun/aliyun-oss/autoload.php";
  try {
    $ossClient = new \OSS\OssClient($admin->oss_id, $admin->oss_secret, $admin->oss_endpoint);
    // 判断存储空间是否存在
    if (!$ossClient->doesBucketExist($bucketName)) {
      $ossClient->createBucket($bucketName, \OSS\OssClient::OSS_ACL_TYPE_PUBLIC_READ);
    } else {
      $ossClient->putBucketAcl($bucketName, \OSS\OssClient::OSS_ACL_TYPE_PUBLIC_READ);
    }
    $uploadOssRes = $ossClient->uploadFile($bucketName, $fileName, $imgTruePath);
    $realUrl = $uploadOssRes['info']['url'];
    if (!$realUrl) {
      // 没获取到Url
      sendError('上传失败，请重试');
    }
  } catch (\OSS\Core\OssException $e) {
    sendError('上传到阿里云OSS失败，请联系代理商检查配置：' . $e->getMessage());
  }
}
// 存入数据库，把path返回到前端
$save = (new Model('agency_imglib'))->find(['uid' => $uid, 'type' => 'vshop_img', 'url' => $realUrl]);
if (!$save->id) {
  $save->uid = $uid;
  $save->is_oss = $is_oss;
  $save->type = 'vshop_img';  // 商品图片
  $save->url = $realUrl;
  $save->md5 = $md5;
  $save->ctime = time();
  $save->save();
}
sendSuccess('上传成功', $realUrl);

function getHost() {
  return getHttp() . '://' . $_SERVER['HTTP_HOST'] . '/';
}

function getHttp() {
  if (strtolower(explode('://', $_SERVER['HTTP_REFERER'])[0]) == 'https') {
    return 'https';
  }
  if (strtolower($_SERVER['REQUEST_SCHEME']) == 'https') {
    return 'https';
  }
  return 'http';
}