Laravel如何上传文件实现示例

 更新时间:2023年11月20日 08:33:21   作者:小拼拼  
这篇文章主要为大家介绍了Laravel如何上传文件的实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

最近失业在家,每天去图书馆阅读大量的书籍。

名句:

人这一生机会很多,重要的机会只有一个
创业成功绝对不是靠技术,而是靠市场
巨人公司的故事、企业助穷、Apple VS 诺亚机、微软如何崛起
如何减压 And 对抗焦虑
平面构成(对称与平衡,对比与调和)

情商课

1. 关切对方(就像父母对话孩子一样的温暖,天气冷不冷啊)
2. 学会道歉,有没有吓到你了 (对不起给你添麻烦了)
3. 共鸣 (那我们把空调开起来吧)

如下代码

<?php
namespace App\Http\Controllers\Api\Air\v_1_0;
use App\Http\Controllers\Core\ApiController;
use App\Models\LoginLog;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use OSS\OssClient;
class FileController extends ApiController
{
    public function uploadFile(Request $request)
    {
        $file = $request->file();
        $ret = $this->_upload($file);
        echo json_encode($ret);
        exit;
    }
    protected function _upload($file)
    {
        $dir_name = empty($_GET['dir']) ? 'image' : trim($_GET['dir']);
        $storage_path = config('upload.storage');
        $webpath_path = config('upload.webpath');
        $image_path =  $dir_name . '/' . date("Y-m") . '/';
        $app_url = env('APP_URL') . '/';
        if (!$file) {
            return array('error'=>1,'message'=>"文件上传失败,请检查后重试");
        }
        $ossConfig = config('oss.' . config('upload.ossflag'));
        if($ossConfig['bucket_addr']) {
            $app_url = $ossConfig['bucket_addr'];
        }
        foreach ($file as $k=>$v) {
            $tmpName = $v->getPathName();
            $fileExtension = $v->getClientOriginalExtension();
            $filePath = md5_file($tmpName) . '.' . $fileExtension;
            $file_size = $v->getSize();
            if($file_size > config('upload.maxSize'))
            {
                return array('error'=>1,'message'=>"文件不可以超过50MB");
            }
            if (!in_array(strtolower($fileExtension),config('upload.allowExts')))
            {
                return array('error'=>1,'message'=>"文件类型不支持");
            }
            //上传成功后处理
            if(config('oss.' . 'oss_open') == 1) {
                $oss = new OssClient($ossConfig['access_key_id'], $ossConfig['access_key_secret'], $ossConfig['endpoint']);
                $res = $oss->uploadFile($ossConfig['bucket'],$webpath_path . $image_path . $filePath,$v->getPathName());
                if ($res)
                {
                    $data['oss'] = 1;
                    $data['attach_url'] = $ossConfig['bucket_addr'] . $webpath_path . $image_path . $filePath;
                } else {
                    $data['attach_url'] = $app_url . $webpath_path . $image_path . $filePath;
                    $data['oss'] = 0;
                }
                $data['time'] = time();
                $attach_id = DB::table('attachment')->insertGetId($data);
                $attach_array[] = $attach_id;
                $attach_url[] = $data['attach_url'];
            } else {
                $data['oss'] = 0;
                $data['attach_url'] = $app_url. $webpath_path . $image_path . $filePath;
                $data['time'] = time();
                $attach_id = DB::table('attachment')->insertGetId($data);
                $attach_array[] = $attach_id;
                $attach_url[] = $data['attach_url'];
            }
            if(!$data['oss'] || config('oss.' . 'is_delete') != 1)
            {
                $v->move($storage_path . $image_path, $filePath);    
                unset($data);
            }
            return array('error'=>0,'attach'=>$attach_array,'url'=>$attach_url[0],'url_arr'=>$attach_url);
        }
    }
}

以上就是Laravel如何上传文件实现示例的详细内容,更多关于Laravel上传文件的资料请关注脚本之家其它相关文章!

相关文章

  • ThinkPHP缓存方法S()概述

    ThinkPHP缓存方法S()概述

    thinkPHP的F方法只能用于缓存简单数据类型,不支持有效期。S()缓存方法支持有效期,又称动态缓存方法,这篇文章主要介绍了ThinkPHP缓存方法S(),需要的朋友可以参考下
    2014-06-06
  • ThinkPHP表单自动验证实例

    ThinkPHP表单自动验证实例

    这篇文章主要介绍了ThinkPHP表单自动验证实例,是ThinkPHP三大自动中非常常用的一个技巧,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • Yii框架中 find findAll 查找出制定的字段的方法对比

    Yii框架中 find findAll 查找出制定的字段的方法对比

    在yii框架中可以使用映射类的find方法取出一条数据或者用findall方法取出数条数据来,那么如何按照所需条件来取数据呢,主要用到了CDbCriteria这个类,这个类是yii自带的操作数据库的支持类
    2014-09-09
  • PHP模板引擎Smarty内置变量调解器用法详解

    PHP模板引擎Smarty内置变量调解器用法详解

    这篇文章主要介绍了PHP模板引擎Smarty内置变量调解器用法,结合实例形式详细分析了Smarty中的常用内置变量调节器定义与使用技巧,需要的朋友可以参考下
    2016-04-04
  • php使用event扩展的io复用测试的示例

    php使用event扩展的io复用测试的示例

    这篇文章主要介绍了php使用event扩展的io复用测试的示例,帮助大家更好的理解和使用php,感兴趣的朋友可以了解下
    2020-10-10
  • thinkphp模板赋值与替换实例简述

    thinkphp模板赋值与替换实例简述

    这篇文章主要介绍了thinkphp模板赋值与替换的方法,以实例形式简述了模板复制的两种简单方法,以及模板替换中的特殊字符串说明与用法实例,是使用频率比较高的技巧,需要的朋友可以参考下
    2014-11-11
  • CodeIgniter框架数据库事务处理的设计缺陷和解决方案

    CodeIgniter框架数据库事务处理的设计缺陷和解决方案

    这篇文章主要介绍了CodeIgniter框架数据库事务处理的设计缺陷和解决方案,也可以说是一个小BUG,使用CodeIgniter事务的朋友会遇到这个问题,需要的朋友可以参考下
    2014-07-07
  • PHP 芝麻信用接入的注意事项

    PHP 芝麻信用接入的注意事项

    本文给大家整理了接入芝麻api借口的两点注意事项,对php 芝麻信用接入感兴趣的朋友通过本文一起学习吧
    2016-12-12
  • PHP 正则表达式小结

    PHP 正则表达式小结

    这篇文章主要介绍了PHP 正则表达式小结,需要的朋友可以参考下
    2015-02-02
  • 一个可分页的基于文本的PHP留言板源码

    一个可分页的基于文本的PHP留言板源码

    一个可分页的基于文本的PHP留言板源码...
    2007-03-03

最新评论