<?php
declare (strict_types = 1);
namespace app\tools\controller;
use app\BaseController;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;
class File extends BaseController
{
protected function initialize()
{
$this->online = session('onlineCategory');
if($this->online == 'teacher')
{
$this->middleware = [
'online'
,'terlogin'
];
$this->luruTeacherId = session('teacher.userid');
}else{
$this->middleware = [
'online'
,'login'
,'auth'
];
$this->luruTeacherId = session('admin.userid');
}
}
public function saveFileInfo($file, $list = array(), $isSave = false)
{
$hash = $file->hash('sha1');
$f = new \app\system\model\Fields;
$serFile = $f::where('hash', $hash)->find();
if($serFile)
{
$serFile->user_id = $this->luruTeacherId;
$serFile->save();
$data['msg'] = '文件已经存在';
$data['val'] = true;
$data['url'] = $serFile->url;
return $data;
}
$savename = \think\facade\Filesystem::disk('public')
->putFile($list['serurl'], $file);
$savename = str_replace("/", "\\", $savename);
if($isSave==true){
$list['url'] = $savename;
$list['newname'] = substr($savename
,strripos($savename, '\\') + 1
,strlen($savename) - strripos($savename ,'\\'));
$list['hash'] = $file->hash('sha1');
$list['user_id'] = $this->luruTeacherId;
$list['user_group'] = $this->online;
$list['oldname'] = $file->getOriginalName();
$list['fieldsize'] = $file->getSize();
$list['category_id'] = $list['category_id'];
$list['bianjitime'] = $file->getMTime( );
$list['extension'] = $file->getOriginalExtension();
$saveinfo = $f::create($list);
}
$data['msg'] = '上传成功';
$data['val'] = true;
$data['url'] = $savename;
return $data;
}
public function readXls($filename){
$path = $filename;
setlocale(LC_ALL, 'zh_CN'); $inputFileType = IOFactory::identify($path);
$excelReader = IOFactory::createReader($inputFileType);
if ($inputFileType == 'Csv') { $excelReader->setInputEncoding('GBK');
$excelReader->setDelimiter(',');
}
$phpexcel = $excelReader->load($path);
$activeSheet = $phpexcel->getActiveSheet();
$sheet = $activeSheet->toArray();
return $sheet;
}
public function upload()
{
$list = request()->only([
'serurl'
,'category_id'
], 'post');
$file = request()->file('file');
$data = $this->saveFileInfo($file, $list, true);
return json($data);
}
}