问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

laravel框架中怎么实现多文件上传

发布网友 发布时间:2022-04-22 06:59

我来回答

2个回答

懂视网 时间:2022-04-28 06:06

下面由Laravel教程栏目给大家介绍laravel系统自带的文件上传功能 ,希望对需要的朋友有所帮助!

对于上传文件这个功能,说难吧,其实都是封装好的,真的不难。说不难吧,各种配置什么的有时候真的也会让人头疼。今天呢,就说一下关于laravel的上传功能的介绍。

直接调用命令从composer上下载了一份laravel的框架,命名为blog(这个随便)

进入文件blog->config->filesystems.php,其中有一个disk的配置。


简单的解释一下

  • disk配置项的总调用,在后面会用到的。可以把它当做一个public的调用方法这样就很好理解了
  • local代表的是其中的一个小的配置项,因为或许一个项目中,要有很多不同的存储方式或者存储位置,local,public,s3都是表示不同的存储方式。
  • driver表示的是存储位置,像local表示的就是存储在本地项目中。s3是存储在亚马逊的磁盘位置,或许还有很多,到时候我们就可以按照这三个的demo模式继续的创建
  • 因为一般都是存储在项目本身,所以我们下面去掉s3的解释。
  • root表示的是文件存储的位置。‘app/public’表示的就是文件存储在blog->storage->app->public下面。‘’app/public‘’是可以随意的改变的。
  • 正常的就像local的两个配置就可以了。
  • 配置完之后呢就到了代码块了。代码块就相当简单了。

    1. 创建路由,路由自己定义就好了(这个就不用解释了吧)
    2. 编写和路由对应的方法,在方法里面开始编写代码。

    前端代码

    <p class="container">
     <p class="panel-heading">上传文件</p>
     <form class="form-horizontal" method="POST" action="" enctype="multipart/form-data">
     {{ csrf_field() }}  
     <label for="file">选择文件</label>
     <input id="file" type="file" class="form-control" name="source" required> 
     <button type="submit" class="btn btn-primary">确定</button>
     </form>
    </p>

    红色部分代码是必须加上的,如果不加上的话,下面的php语句中的代码验证就无法实现

    后端代码

    3

    public function upload(Request $request){
     	if ($request->isMethod('POST')) { //判断是否是POST上传,应该不会有人用get吧,恩,不会的
    
     		//在源生的php代码中是使用$_FILE来查看上传文件的属性
     		//但是在laravel里面有更好的封装好的方法,就是下面这个
     		//显示的属性更多
     		$fileCharater = $request->file('source');
    
     		if ($fileCharater->isValid()) { //括号里面的是必须加的哦
     			//如果括号里面的不加上的话,下面的方法也无法调用的
    
     			//获取文件的扩展名 
     			$ext = $fileCharater->getClientOriginalExtension();
    
     			//获取文件的绝对路径
     			$path = $fileCharater->getRealPath();
    
     			//定义文件名
     			$filename = date('Y-m-d-h-i-s').'.'.$ext;
    
     			//存储文件。disk里面的public。总的来说,就是调用disk模块里的public配置
     			Storage::disk('public')->put($filename, file_get_contents($path));
     		}
     	}
     	return view('upload');
     }

    小编是一边弄一边打,生怕自己写错了给你们笑话。最后成功的上传了文件进去。

    热心网友 时间:2022-04-28 03:14

    一、使用工具:laravel、软件编写程序
    二、方法步骤:
    1、配置本地文件系统
    让我们从配置开始吧,我们在 public 目录下创建一个 uploads 目录用来存放上传的文件,这样所有上传文件都可以通过浏览器直接访问。
    首先我们在博客项目目录下使用如下命令在 public 目录下创建 uploads 子目录:

    很简单。接下来我们来编辑 config/blog.php:

    我们在 uploads 配置项中使用 storage 定义使用的文件系统,使用 webpath 定义 web 访问根目录。
    最后,编辑 config/filesystems.php 如下:

    2、创建帮助函数文件
    在 Laravel 5.1 项目中有时我们会需要一些不依赖于类的辅助函数,通常我们会将这些辅助函数定义在一个单独文件如 helpers.php 中。我们在 app 目录下创建这个名为 helpers.php 的文件,并编辑其内容如下:

    其中 human_filesize() 函数返回一个易读的文件尺寸,is_image() 函数在文件类型为图片的时候返回 true。
    要让应用能够正确找到 helpers.php 文件,还要修改项目根目录下的 composer.json:
    在 autoload 配置项的 files 数组中指定要被加载的文件/文件夹。修改完成后记得运行 composer mpauto 确保修改生效:

    现在 helpers.php 中的所有函数都会载入到自动加载器中,你可以在博客应用的代码中任意使用其中的函数。
    3、创建文件上传管理服务
    现在基本配置已经完成了,让我们创建一个服务类来管理上传文件。
    检测文件 MIME 类型
    我们想要基于不同类型的上传文件进行不同的操作,这可以通过检测上传文件 MIME 类型轻松实现。
    PHP 有一个内置函数 mime_content_type() 用于检测文件的MIME类型,但是该函数已经废弃了,我们使用另一个解决方案。
    在 Packagist 中搜索 “mime” 会查询到一个名为 dflydev 的包,我们在博客项目中使用 Composer 安装该依赖包:
    我们将使用该依赖包提供的方法来检测文件的 MIME 类型。
    创建UploadsManager类
    在 app/Services 目录下创建 UploadsManager.php,编辑其内容如下:

    4、实现文件上传管理列表
    现在 UploadsManager 服务类已经创建,接下来我们来实现控制器的 index 方法。
    创建 index 方法
    编辑 app/Http/Controllers/Admin 目录下的 UploadController.php 文件内容如下:
    构造方法中注入了 UploadsManager 依赖,在 index() 方法中只需传入 folderInfo() 返回的数据到要渲染的视图并返回即可。
    你可能已经注意到 $folder 从请求中获取,是的,我们只需要通过请求参数即可实现文件夹修改。
    创建 index 视图
    在 resources/views/admin 目录下新建 upload 目录,并在该目录下创建 index.blade.php 文件,编辑该文件内容如下:

    尽管这个模板文件很长,但是理解起来并没有什么困难,所有文件上传和下载管理都将在这里进行。
    有没有注意到我们在最后包含了 admin.upload._modals?是的,我们将模态对话框放到了一个单独的视图模板中。现在,我们在 resources/views/admin/upload 目录下创建一个空的 _modals.blade.php 文件。
    上传管理界面
    打开浏览器,进入博客应用后台管理页面,点击顶部导航条的“上传”(Uploads)链接,将会跳转到如下页面:
    既漂亮又清爽,有木有?接下来让我们来实现所有的模态对话框及其背后的业务逻辑。
    5、完成文件上传管理功能
    对于完整的文件上传管理器而言剩下的工作已经不多了,现在是时候完成所有功能了。
    添加路由
    我们需要为上传管理器定义所有需要的路由,编辑 app/Http/routes.php 添加如下路由:
    定义所有模态对话框
    编辑我们之前创建的 _modals.blade.php 文件内容如下:

    在该文件中总共有5个不同的模态弹出框,分别对应上面定义的5个路由。
    添加表单请求验证类
    使用 Artisan 命令创建 UploadFileRequest,并编辑其内容如下:
    使用 Artisan 命令创建 UploadNewFolderRequest,并编辑其内容如下:

    同样,这些请求类用于验证表单输入。
    完成 UploadController 所有方法
    编辑 UploadController.php 文件内容如下:

    完成 UploadsManager 服务类
    最后编辑 app/Services/UploadsManager.php 内容如下:

    至此,已经完成了文件上传管理的所有工作我们将本地存储的根目录修改为前面创建的 public/uploads 目录。
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... laravel 怎么限制上传文件大小 我的电脑为什么下载好网络游戏但是打不开? 电脑从装系统后游戏下载下来打不开? 刚买的游戏本电脑,为什么下载安装完游戏打不开 笔记本,为什么下载的游戏打不开? 下载的游戏打不开怎么办 电脑下载的游戏打开突然打不开提示这个? 为什么电脑下载的游戏打不开啊 打开了也玩不了 字... qq传游戏到苹果手机怎么打开 下载好了 但是打不开游戏为什么? 苹果手机怎么互传游戏,吃鸡 电脑下载游戏为什么玩不了 安卓和苹果怎么互传视频 为什么我下载的游戏打不开 苹果手机怎么互传游戏 电脑下载了游戏却打不开,怎么会是啊、 iphone怎么互传游戏? 苹果手机QQ怎么上传视频 苹果六用qq面对面传游戏怎么传 长春市初中、小学和幼儿园教师资格认定怎么办 用laravel框架上传excel文件出现内存问题怎么解决 如何安装Laravel框架 laravel 为什么要大量使用env而不是普遍用的常量定... laravel下有哪些包值得推荐 laravel 文档 加州原野和果园老农哪个好 果园老农坚果怎么样 laravel框架需要改什么配置文件 &lrm;果园老农的每日代餐能当做减肥餐吗? 有人部署过 Laravel 吗 果园老农 南沙滩店怎么样 果园老农产品“每日均衡”过期两个月还可以食用吗? 如何把用laravel5.4写好的网站架构到远程虚拟机上 果园老农 双榆树店怎么样 php laravel 如果想做一个步骤非常多的数据计算,... &#8206;果园老农的每日代餐用的原料好吗? Laravel怎么样弥补自带的缺点? 果园老农 西单店怎么样 果园老农 皂君庙店怎么样 果园老农干果