<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>七牛 - imatchu - 文件上传示例</title>
</head>
<body>
<form method="post" action="/resource/upload" enctype="multipart/form-data">
<input name="file" type="file"/>
<input type="submit" value="上传"/>
</form>
</body>
</html>
/**
* @desc 文件上传service
* @return mixed
*/
public static function upload()
{
if (empty($_FILES['file'])) {
return [
'code' => -1,
'message' => '请选择文件',
'data' => []
];
}
$token = self::genToken();
$fileType = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
$fileSize = $_FILES['file']['size'];
if (!in_array($fileType, self::$allowType)) {
return [
'code' => -1,
'message' => '不允许上传的文件类型',
'data' => []
];
}
if ($fileSize > \Yii::$app->params['qiniu_config']['maxSize']) {
return [
'code' => -1,
'message' => '超出最大允许上传大小8M',
'data' => []
];
}
// 要上传文件的本地路径
$filePath = $_FILES['file']['tmp_name'];
// 上传到七牛后保存的文件名
$saveNameForUpload = Tools::UniqidFileName() . '.' . pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
// 初始化 UploadManager 对象并进行文件的上传。
$uploadMgr = new UploadManager();
// 调用 UploadManager 的 putFile 方法进行文件的上传。
list($ret, $err) = $uploadMgr->putFile($token, $saveNameForUpload, $filePath);
if ($err !== null) {
//上传失败
return [
'code' => -1,
'message' => '文件上传失败',
'data' => []
];
} else {
//上传成功
$fileWithFullUrl = \Yii::$app->params['qiniu_config']['domain'] . $saveNameForUpload;
$resourceArr = [
'create_time' => date('Y-m-d H:i:s'),
'key' => $ret['key'],//七牛返回key
'real_name' => $_FILES['file']['name'],//原始文件名
'type' => $fileType,//文件类型
'size' => $fileSize,//文件大小字节
'ext' => pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION),//文件扩展
'savename' => $saveNameForUpload,//保存的文件名 (不包含域名url前缀),
'url' => $fileWithFullUrl,//完整七牛url地址
];
$reModel = new Resource();
$reModel->setAttributes($resourceArr);
if (!$reModel->save()) {
$errors = $reModel->getFirstErrors();
return [
'code' => -1,
'message' => array_shift($errors),
'data' => []
];
} else {
return [
'code' => 1,
'message' => '上传文件成功',
'data' => [
'resource_id' => \Yii::$app->db->getLastInsertID(),
'file_name' => $saveNameForUpload,
'file_url' => $fileWithFullUrl
]
];
}
}
}