PHP file流数据文件上传接收接口类,可上传视频图片等类型文件

<?php
/**
 * 视频上传
 * User:
 * Date: 2019/7/20
 * Email: 
 */

/**
 * @param $file 数据流
 * @param $type_arr 文件类型
 * @param $folder 文件分类
 * @return array
 */
function file_upload($file, $type_arr, $folder)
{

    //以日期为区间划分文件夹
    $up_dir = $folder . '/' . date('Y-m-d', time()) . '/';
    if (!file_exists($up_dir)) {
        mkdir($up_dir, 0777, true); //不存在创建文件夹
        chmod($up_dir, 0777); //强制赋予权限
    }

    if (in_array($file["type"], $type_arr)) {

        if ($file["error"] > 0) {

            return $res = array('code' => '101', 'msg' => $file["error"]);

        } else {

            //大于10m 不存储
            if (($file["size"] / 1048576) > 20) {
                return $res = array('code' => '406', 'msg' => '文件过大,上限20m!');
            }

            //获取后缀
            $name      = explode('/', $file["type"]);
            $file_name = $up_dir . date('YmdHis', time()) . '.' . $name[1];

//            echo "Upload: " . $_FILES["file"]["name"] . "<br />";
//            echo "Type: " . $_FILES["file"]["type"] . "<br />";
//            echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
//            echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

            if (file_exists($file_name)) {

                return $res = array('code' => '406', 'msg' => '文件已存在!');

            } else {
                move_uploaded_file($file["tmp_name"], $file_name);

                return $res = array('code' => '0', 'msg' => '上传成功!', 'path' => $file_name);

            }
        }
    } else {

        return $res = array('code' => '104', 'msg' => '无效的文件类型!');
    }

}

//限制类型数组
$type_arr = [
    'image/gif',
    'image/jpeg',
    'image/png',
    'video/mp4',
];
$files    = !empty($_FILES["file"]) ? $_FILES["file"] : ""; //文件

$folder = !empty($_POST['type']) ? trim($_POST['type']) : 'Avatar'; //存储文件夹

$rs = file_upload($files, $type_arr, $folder);

echo json_encode($rs);
exit();

?>

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值