ctms/ctms-api/controllers/UploadController.php
2025-04-10 23:19:13 +08:00

380 lines
11 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
# @Author: 嗨噜客(三亚) <fm453>
# @Date: 2022-05-10T01:13:34+08:00
# @Email: fm453@lukegzs.com
# @Last modified by: fm453
# @Last modified time: 2022-05-14T21:12:32+08:00
# @Copyright: www.hiluker.cn
namespace backend\controllers;
use Yii;
use yii\data\Pagination;
use yii\web\UploadedFile;
use common\models\CAttachment;
use backend\controllers\Common;
class UploadController extends Common
{
public function beforeAction($action)
{
if (!$this->pid) {
$this->result('您正使用本系统内部接口,禁止非法链接使用!');
}
return parent::beforeAction($action);
}
public function actionIndex()
{
$apis = [
'image'=>'上传图片(单传)',
];
$this->result('您正使用CMTS系统文件上传接口', $apis, 200);
}
public function actionImage()
{
$post = $this->postdata;
$model = new CAttachment();
$file = UploadedFile::getInstanceByName('file');
//{error: 0
// name: "e8.png"
// size: 5362
// tempName: "/Applications/XAMPP/xamppfiles/temp/phpG8vgnV"
// type: "image/png"}
// 构建目录
$attachDir = Yii::getAlias('@upload'); //附件所在目录
$targetDir = "/pics"; //开始构建目标转存目录
if (!file_exists($attachDir . $targetDir)) {
@mkdir($attachDir . $targetDir);
}
$siteId = $this->site_id;
$targetDir .= '/'.$siteId;
if (!file_exists($attachDir . $targetDir)) {
@mkdir($attachDir . $targetDir);
}
$pid = $this->pid;
$targetDir .= '/'.$pid;
if (!file_exists($attachDir . $targetDir)) {
@mkdir($attachDir . $targetDir);
}
$timeDir = date('Ym');
$targetDir .= "/".$timeDir;
if (!file_exists($attachDir . $targetDir)) {
@mkdir($attachDir . $targetDir);
}
//处理请求的文件信息
$title = isset($file->name) ? $file->name : md5(TIMESTAMP.rand(1, 99)).'.jpg'; //文件原名
//取后缀名
$_filetype = explode('/', $file->type);
$suffix = strtolower($_filetype[1]);
//重新命名以便转存
$newName = date('dHis', TIMESTAMP).'_'.md5($title);
$newFile = $attachDir . $targetDir."/".$newName.".".$suffix;
$res = $file->saveAs($newFile, true);
//文件入库
//POST数据处理
$member_id = 0;
if (isset($post['mid']) && (int)$post['mid']>0) {
$member_id = (int)$post['mid'];
}
$options = '';
if (isset($post['options'])) {
$options = json_encode($options, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT);
}
$model = new CAttachment();
$model->siteid = $siteId;
$model->pid = $this->pid;
$model->uid = $this->user_id;
$model->mid = $member_id;
$model->type = 0; //附件类型0图片1视频2音频3表格4文档5PPT888证书999其他
$model->status_code = 1;
$model->title = $title;
$model->filesize = $file->size;
$model->route = $targetDir."/".$newName.".".$suffix;
$model->options = $options;
$model->update_at = $model->create_at = time();
$model->save();
$id = $model->attributes['id']; //获取插入后id
$this->result('上传成功', ['id'=>$id,'path'=>$model->route], 200);
}
public function actionImages()
{
$post = $this->postdata;
$model = new CAttachment();
$files = UploadedFile::getInstancesByName('files');
// 构建目录
$attachDir = Yii::getAlias('@upload'); //附件所在目录
$targetDir = "/pics"; //开始构建目标转存目录
if (!file_exists($attachDir . $targetDir)) {
@mkdir($attachDir . $targetDir);
}
$siteId = $this->site_id;
$targetDir .= '/'.$siteId;
if (!file_exists($attachDir . $targetDir)) {
@mkdir($attachDir . $targetDir);
}
$pid = $this->pid;
$targetDir .= '/'.$pid;
if (!file_exists($attachDir . $targetDir)) {
@mkdir($attachDir . $targetDir);
}
$timeDir = date('Ym');
$targetDir .= "/".$timeDir;
if (!file_exists($attachDir . $targetDir)) {
@mkdir($attachDir . $targetDir);
}
//处理请求的文件信息
//POST数据处理
$member_id = 0;
if (isset($post['mid']) && (int)$post['mid']>0) {
$member_id = (int)$post['mid'];
}
$options = '';
if (isset($post['options'])) {
$options = json_encode($options, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT);
}
$attachModel = new CAttachment();
$ids = $paths = $datas = [];
foreach ($files as $file) {
$tkey = microtime();
$title = isset($file->name) ? $file->name : md5($tkey.rand(1, 99)).'.jpg'; //文件原名
//取后缀名
$_filetype = explode('/', $file->type);
$suffix = strtolower($_filetype[1]);
//重新命名以便转存
$newName = date('dHis', TIMESTAMP).'_'.md5($title);
$newFile = $attachDir . $targetDir."/".$newName.".".$suffix;
$res = $file->saveAs($newFile, true);
//文件入库
$model = clone $attachModel;
$model->siteid = $siteId;
$model->pid = $this->pid;
$model->uid = $this->user_id;
$model->mid = $member_id;
$model->type = 0; //附件类型0图片1视频2音频3表格4文档5PPT888证书999其他
$model->status_code = 1;
$model->title = $title;
$model->filesize = $file->size;
$model->route = $targetDir."/".$newName.".".$suffix;
$model->options = $options;
$model->update_at = $model->create_at = time();
$model->save();
$id = $model->attributes['id']; //获取插入后id
$ids[$id] = $id;
$paths[$id] = $model->route;
}
$this->result('上传成功', ['ids'=>$ids,'paths'=>$paths], 200);
}
public function save_image()
{
$post = Yii::$app->request->post();
$model = new CAttachment();
$files = UploadedFile::getInstanceByName('files');
//{error: 0
// name: "e8.png"
// size: 5362
// tempName: "/Applications/XAMPP/xamppfiles/temp/phpG8vgnV"
// type: "image/png"}
// 构建目录
$attachDir = Yii::getAlias('@upload'); //附件所在目录
$targetDir = "/pics"; //开始构建目标转存目录
if (!file_exists($attachDir . $targetDir)) {
@mkdir($attachDir . $targetDir);
}
$siteId = $this->site_id;
$targetDir .= '/'.$siteId;
if (!file_exists($attachDir . $targetDir)) {
@mkdir($attachDir . $targetDir);
}
$pid = $this->pid;
$targetDir .= '/'.$pid;
if (!file_exists($attachDir . $targetDir)) {
@mkdir($attachDir . $targetDir);
}
$timeDir = date('Ym');
$targetDir .= "/".$timeDir;
if (!file_exists($attachDir . $targetDir)) {
@mkdir($attachDir . $targetDir);
}
//处理请求的文件信息
$title = isset($file->name) ? $file->name : md5(TIMESTAMP.rand(1, 99)).'.jpg'; //文件原名
//取后缀名
$_filetype = explode('/', $file->type);
$suffix = strtolower($_filetype[1]);
//重新命名以便转存
$newName = date('dHis', TIMESTAMP).'_'.md5($title);
$newFile = $attachDir . $targetDir."/".$newName.".".$suffix;
$res = $file->saveAs($newFile, true);
//文件入库
//POST数据处理
$post = Yii::$app->request->post();
$member_id = 0;
if (isset($post['mid']) && (int)$post['mid']>0) {
$member_id = (int)$post['mid'];
}
$options = '';
if (isset($post['options'])) {
$options = json_encode($options, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT);
}
$model = new CAttachment();
$model->siteid = $siteId;
$model->pid = $this->pid;
$model->uid = $this->user_id;
$model->mid = $member_id;
$model->type = 0; //附件类型0图片1视频2音频3表格4文档5PPT888证书999其他
$model->status_code = 1;
$model->title = $title;
$model->filesize = $file->size;
$model->route = $targetDir."/".$newName.".".$suffix;
$model->options = $options;
$model->update_at = $model->create_at = time();
$model->save();
$id = $model->attributes['id']; //获取插入后id
$this->result('上传成功', ['id'=>$id,'path'=>$model->route], 200);
}
}
/*多图上传时的数据示例
array(7) {
[0]=>
object(yii\web\UploadedFile)#60 (6) {
["name"]=>
string(18) "file-1652511550195"
["tempName"]=>
string(45) "/Applications/XAMPP/xamppfiles/temp/phpJvR1FV"
["type"]=>
string(9) "text/html"
["size"]=>
int(425)
["error"]=>
int(0)
["_tempResource":"yii\web\UploadedFile":private]=>
array(0) {
}
}
[1]=>
object(yii\web\UploadedFile)#62 (6) {
["name"]=>
string(18) "file-1652511550195"
["tempName"]=>
string(45) "/Applications/XAMPP/xamppfiles/temp/phpzIuYVB"
["type"]=>
string(9) "text/html"
["size"]=>
int(425)
["error"]=>
int(0)
["_tempResource":"yii\web\UploadedFile":private]=>
array(0) {
}
}
[2]=>
object(yii\web\UploadedFile)#63 (6) {
["name"]=>
string(18) "file-1652511550195"
["tempName"]=>
string(45) "/Applications/XAMPP/xamppfiles/temp/phpUHXR4W"
["type"]=>
string(9) "text/html"
["size"]=>
int(425)
["error"]=>
int(0)
["_tempResource":"yii\web\UploadedFile":private]=>
array(0) {
}
}
[3]=>
object(yii\web\UploadedFile)#64 (6) {
["name"]=>
string(18) "file-1652511550195"
["tempName"]=>
string(45) "/Applications/XAMPP/xamppfiles/temp/phpEa5Q93"
["type"]=>
string(9) "text/html"
["size"]=>
int(425)
["error"]=>
int(0)
["_tempResource":"yii\web\UploadedFile":private]=>
array(0) {
}
}
[4]=>
object(yii\web\UploadedFile)#65 (6) {
["name"]=>
string(18) "file-1652511550195"
["tempName"]=>
string(45) "/Applications/XAMPP/xamppfiles/temp/phpEDfHIr"
["type"]=>
string(9) "text/html"
["size"]=>
int(425)
["error"]=>
int(0)
["_tempResource":"yii\web\UploadedFile":private]=>
array(0) {
}
}
[5]=>
object(yii\web\UploadedFile)#66 (6) {
["name"]=>
string(18) "file-1652511550195"
["tempName"]=>
string(45) "/Applications/XAMPP/xamppfiles/temp/phpiLqBVZ"
["type"]=>
string(9) "text/html"
["size"]=>
int(425)
["error"]=>
int(0)
["_tempResource":"yii\web\UploadedFile":private]=>
array(0) {
}
}
[6]=>
object(yii\web\UploadedFile)#67 (6) {
["name"]=>
string(18) "file-1652511550195"
["tempName"]=>
string(45) "/Applications/XAMPP/xamppfiles/temp/php5rqzIk"
["type"]=>
string(9) "text/html"
["size"]=>
int(425)
["error"]=>
int(0)
["_tempResource":"yii\web\UploadedFile":private]=>
array(0) {
}
}
}
*/