ywtc_api/application/api/controller/Uploadfile.php

159 lines
5.5 KiB
PHP

<?php
namespace app\api\controller;
use think\Db;
use \think\Loader;
use think\helper\Hash;
use Qrcode\Compress;
use app\admin\model\Attachment as AttachmentModel;
/**
* 公共接口
* @package app\api\controller
*/
class Uploadfile extends Api
{
//初始化
public function initialize(){
parent::initialize();
}
/**
* 上传图片
* @param file $imgfile 图片文件
* @author loomis<2477365162@qq.com>
*/
public function uploadimgfile(){
$file = request()->file('imgfile');
// 移动到框架应用根目录 /public/uploads/ 目录下'size'=>15678,
$info = $file->validate(['ext' => 'jpg,png,gif,jpeg'])->move($_SERVER['DOCUMENT_ROOT'] . '/uploads/xcximg');
if ($info) {
$source = $_SERVER['DOCUMENT_ROOT'] . '/uploads/xcximg/' . date('Ymd') . '/' . $info->getFilename();
$percent = 0.5; #缩放比例
(new Compress($source, $percent))->compressImg($source); //压缩
// 成功上传后 获取上传信息
$data['uid'] = 0;
$data['path'] = 'uploads/xcximg/' . date('Ymd') . '/' . $info->getFilename();
$data["md5"] = md5($data['path']);
$data["sha1"] = sha1($data['path']);
$data['name'] = $info->getFilename();
$data['ext'] = $info->getExtension();
$data['size'] = $info->getSize();
$data['category'] = 2;
$data['create_time'] = time();
$id = AttachmentModel::create($data);
return json(['code' => 200, 'msg' => '上传成功', 'result' => [
'img_id' => $id['id'],
'img_url' => $this->getFileUrl($id['id']),
]]);
} else {
// 上传失败获取信息
return json(['code' => 500, 'msg' => $file->getError()]);
}
}
//上传视频
public function uploadvideofile() {
$file = request()->file('videofile');
// 移动到框架应用根目录/public/uploads/ 目录下'size'=>15678,
$info = $file->validate(['ext' => 'mp4'])->move($_SERVER['DOCUMENT_ROOT'] . '/uploads/xcxvideo');
if($info){
// 成功上传后 获取上传信息
$data['uid'] = 0;
$data['path'] = 'uploads/xcxvideo/' . date('Ymd') . '/' . $info->getFilename();
$data["md5"] = md5($data['path']);
$data["sha1"] = sha1($data['path']);
$data['name'] = $info->getFilename();
$data['ext'] = $info->getExtension();
$data['size'] = $info->getSize();
$data['category'] = 2;
$data['create_time'] = time();
$id = AttachmentModel::create($data);
return json(['code' => 200, 'msg' => '上传成功', 'result' => [
'video_id' => $id['id'],
'video_url' => $this->getFileUrl($id['id']),
]]);
} else {
// 上传失败获取信息
return json(['code' => 500, 'msg' => $file->getError()]);
}
}
//接收签名图片
public function uploadsigninimgfile(){
$filedata = $this->request->param(); //传参
$file = $filedata['imgfile'];
header('Content-type:text/html;charset=utf-8');
$base64_image_content = trim($file);
//正则匹配出图片的格式
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)) {
$type = $result[2];//图片后缀
$new_file = $_SERVER['DOCUMENT_ROOT'] . '/uploads/xcximg/'.date('Ymd').'/';
if (!file_exists($new_file)) {
//检查是否有该文件夹,如果没有就创建,并给予最高权限
mkdir($new_file, 0700);
}
$filename = time() . '_' . uniqid() . ".{$type}"; //文件名
$new_file = $new_file . $filename;
//写入操作
if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))) {
// 成功上传后 获取上传信息
$data['uid'] = 0;
$data['path'] = 'uploads/xcximg/' . date('Ymd') . '/' . $filename;
$data["md5"] = md5($data['path']);
$data["sha1"] = sha1($data['path']);
$data['name'] = $filename;
$data['ext'] = $type;
$data['size'] = 0;
$data['category'] = 2;
$data['create_time'] = time();
$id = AttachmentModel::create($data);
return json(['code' => 200, 'msg' => '上传成功', 'result' => [
'img_id' => $id['id'],
'img_url' => $this->getFileUrl($id['id']),
]]);
} else {
return json(['code' => 500, 'msg' => '上传失败']);
}
}
}
function getimg($imgsrc){
list($src_w,$src_h,$src_info) = getimagesize($imgsrc);
switch ($src_info){
case 2:
$createtype = 'imagecreatefromjpeg';
$headertype = 'imagejpeg';
break;
case 1:
$createtype = 'imagecreatefromgif';
$headertype = 'imagegif';
break;
case 3:
$createtype = 'imagecreatefrompng';
$headertype = 'imagepng';
break;
default:
$createtype = 'imagecreatefromjpeg';
$headertype = 'imagejpeg';
break;
}
$src=$createtype($imgsrc);
return $src;
}
}