zoukankan      html  css  js  c++  java
  • tp5.1上传

    <?php

    namespace appapicontroller;

    use apputilReturnCode;
    use thinkController;
    use Request,Log,Config;

    class Upload extends Base
    {
    protected $size;
    protected $savePath;
    protected $i;

    //带文件类型验证的上传
    public function upload()
    {

    $tooken = $this->request->header('Authorization');
    $jwtn = new Jwtn();
    $res = $jwtn->checkToken($tooken);
    if (!$res) {
    return $this->buildFailed(ReturnCode::OTHER_LOGIN, '登陆超时');
    }
    // 大小
    $size=30*1024*1024;
    //获得文件的对象信息
    $file = request()->file();
    // 移动到框架应用根目录/public/upload/ 目录下
    $ifsuccess=true;$i=0;$num=0;$data=array();
    foreach ($file as $k=>$v) {
    $i++;
    $info = $v->validate(['size' => $size, 'ext' => 'jpg,png,pdf,zip'])->move('../public/upload');
    if ($info) {
    $data[$k][]=[
    'fileName' => $info->getFilename(),
    'fileUrl' => $this->request->domain().'/public/upload'.$info->getSaveName(),
    'time' =>time()
    ];
    } else {
    $num++;
    $ifsuccess=false;
    $num++;
    $data[$k][]=[
    'error_code' => ReturnCode::FILE_SAVE_ERROR,
    'msg' => '文件上传失败'
    ];
    }
    }
    if($ifsuccess){
    return $this->buildSuccess($data, '所有文件上传成功',ReturnCode::SUCCESS);
    }else{
    if($i == $num){
    return $this->buildFailed(ReturnCode::FILE_SAVE_ERROR, '所有文件上传失败',$data);
    }else{
    return $this->buildFailed(ReturnCode::FILE_SAVE_ERROR, '部分文件上传失败',$data);
    }
    }
    }
    //未验证文件格式
    public function upload_() {
    $path = '/upload/' . date('Ymd', time()) . '/';
    $tooken = $this->request->header('Authorization');
    $jwtn=new Jwtn();
    $res =$jwtn->checkToken($tooken);
    if(!$res){
    return $this->buildFailed(ReturnCode::OTHER_LOGIN, '登陆超时');
    }
    $ifsuccess=true;$i=0;$num=0;$data=array();
    foreach ($_FILES as $k=>$v){
    $i++;
    $name = $v['name'];
    $tmp_name = $v['tmp_name'];
    $error = $v['error'];
    //过滤错误
    if ($error) {
    switch ($error) {
    case 1:
    $error_message = '您上传的文件超过了PHP.INI配置文件中UPLOAD_MAX-FILESIZE的大小';
    break;
    case 2:
    $error_message = '您上传的文件超过了PHP.INI配置文件中的post_max_size的大小';
    break;
    case 3:
    $error_message = '文件只被部分上传';
    break;
    case 4:
    $error_message = '文件不能为空';
    break;
    default:
    $error_message = '未知错误';
    }
    die($error_message);
    }
    $arr_name = explode('.', $name);
    $hz = array_pop($arr_name);
    $new_name = md5(time() . uniqid()) . '.' . $hz;
    if (!file_exists($_SERVER['DOCUMENT_ROOT'] . $path)) {
    mkdir($_SERVER['DOCUMENT_ROOT'] . $path, 0755, true);
    }
    if (move_uploaded_file($tmp_name, $_SERVER['DOCUMENT_ROOT'] . $path . $new_name)) {
    $data[$k][]=[
    'fileName' => $new_name,
    'fileUrl' => $this->request->domain() . $path . $new_name,
    'time' =>time()
    ];
    } else {
    $ifsuccess=false;
    $num++;
    $data[$k][]=[
    'error_code' => ReturnCode::FILE_SAVE_ERROR,
    'msg' => '文件上传失败'
    ];
    }
    }
    if($ifsuccess){
    return $this->buildSuccess($data, '所有文件上传成功',ReturnCode::SUCCESS);
    }else{
    if($i == $num){
    return $this->buildFailed(ReturnCode::FILE_SAVE_ERROR, '所有文件上传失败',$data);
    }else{
    return $this->buildFailed(ReturnCode::FILE_SAVE_ERROR, '部分文件上传失败',$data);
    }
    }
    }


    /**
    * 文件上传处理
    * @return hink esponseJson
    */
    public function upload1($file, $num=1){
    //获取upload配置信息
    $path = config('common.app_path');
    $config = config('upload.');
    $this->size = $config['img_size'];
    $this->savePath = $config['save_path'] . DIRECTORY_SEPARATOR . 'images';
    $this->i = $config['compression_size'];
    if(1 == $num){
    $info = $file->validate(['size'=>$this->size])
    ->move($this->savePath);
    if($info){
    $url1 = dirname($_SERVER['SCRIPT_FILENAME']) . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . $info->getSaveName();
    //生成缩略图
    $image = Image::open($url1);

    $width = $image->width() * $this->i;
    $height = $image->height() * $this->i;
    $image->thumb($width, $height, Image::THUMB_CENTER)->save($url1,'jpg',30,true);
    $path = $path. DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . $info->getSaveName();
    $path = str_replace('\', '/', $path);
    return $path;
    }else{
    return $file->getError();
    }
    }else{
    return $this->manyUpload($file);
    }
    }
    //多图
    public function manyUpload($files){
    $url = config('common.app_path');
    $path = null;
    foreach($files as $file) { //多图上传关键在这
    //验证规则等,在配置文件中读取
    $info = $file->validate(['size'=>$this->size])
    ->move($this->savePath);
    if ($info) {
    $url1 = dirname($_SERVER['SCRIPT_FILENAME']) . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . $info->getSaveName();
    //生成缩略图
    $image = Image::open($url1);
    $width = $image->width() * $this->i;
    $height = $image->height() * $this->i;
    $image->thumb($width, $height, Image::THUMB_SCALING)->save($url1,'jpg',30,true);

    $path .= $url . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . $info->getSaveName() . "|";
    } else {
    // 上传失败获取错误信息
    return $file->getError();
    }
    }
    $path = str_replace('\', '/', $path);
    return rtrim($path, '|');

    }
    /*base64图片*/
    function Base64Upload($base64) {
    $url = config('common.app_path');
    $path = null;
    $result = array();
    foreach ($base64 as $k => $v) {
    $path = dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . 'public' . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR;


    //保存base64字符串为图片
    //匹配出图片的格式
    if (preg_match('/^(data:s*image/(w+);base64,)/', $v, $re)){
    $type = $re[2];

    $new_file = $path . date('Ymd',time())."/";

    if(!file_exists($new_file))
    {
    //检查是否有该文件夹,如果没有就创建,并给予最高权限
    mkdir(iconv("UTF-8", "GBK", $new_file),0777,true);
    @chmod($new_file, 0777);
    }
    //文件名
    $file_name = date("YmdHis") . '_' . rand(10000, 99999) . '.' . $type;
    //文件存放路径
    $new_file = $new_file . $file_name;

    if (file_put_contents($new_file, base64_decode(str_replace($re[1], '', $v)))){
    $result[$k] = $url . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . date('Ymd',time()) . DIRECTORY_SEPARATOR . $file_name;
    $result[$k] = str_replace('\', '/', $result[$k]);
    // echo '新文件保存成功:', $new_file;
    }

    }
    }
    return $result;
    }
    /**
    * 上传文件
    */
    public function uploadFile($file)
    {
    //获取upload配置信息
    $path = config('common.app_path');
    $config = config('upload.');
    $size = $config['file_size'];
    $savePath = $config['save_path'] . DIRECTORY_SEPARATOR . 'files';
    $info = $file->validate(['size'=>$size])
    ->move($savePath);


    if($info){
    $path = $path. DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . $info->getSaveName();
    $path = str_replace('\', '/', $path);
    return $path;
    }else{
    return $file->getError();
    }
    }


    }

  • 相关阅读:
    ASP.NET大闲话:ashx文件有啥用
    Silverlight之我见——制作星星闪烁动画
    今天写了一个简单的新浪新闻RSS操作类库
    继续聊WPF——设置网格控件列标题的样式
    继续聊WPF——如何获取ListView中选中的项
    继续聊WPF——Thumb控件
    继续聊WPF——进度条
    继续聊WPF——自定义CheckBox控件外观
    继续聊WPF——Expander控件(1)
    继续聊WPF——Expander控件(2)
  • 原文地址:https://www.cnblogs.com/cainiaoaixuexi/p/13468816.html
Copyright © 2011-2022 走看看