Laravel--文件管理及上传自定义目录及文件名

摘要:
Larave通过在上传的文件实例上使用store方法,可以轻松存储上传的文件。您只需传入保存上传文件的路径并调用store方法:$path=$request-˃file-˃store;指定文件名$path=$request-˃file-˃storeAs;文件删除存储::delete;使用Larravel文件上传自定义文件非常方便。在开发中,我们需要创建一个软连接,但可能不需要在特定项目中创建软连接,或者您需要直接访问公共磁盘下的文件。此时,您需要调整配置文件。

laravel 上传 php 需要开启 fileinfo 扩展

先看一个例子:

        $file = $request->file('shopimg');
        $path = $file->store('public/avatars');
        echo  $path;
        //给storage目录public/avatars/ 上传文件

         //获取文件内容 
        $contents = Storage::get('publicavatarsfile.jpg');
        //echo $contents;

        //判断文件是否存在 1 
        $exists = Storage::disk('local')->exists('public/avatars/file.jpg');
        //echo $exists;

正文:

aravel文件系统
Laravel框架中对文件的管理已经很友好了,官方文档也做了很详细的说明,下面先就一些基础知识做下简单介绍,已了解的同学可以略过本部分。

系统配置
Laravel 有强大的文件系统抽象,基于Frank de Jonge 开发的PHP包,文件系统的配置文件位于 config/filesystems.php

公共磁盘
public 磁盘用于存储可以被公开访问的文件,默认情况下, public 磁盘使用 local 驱动并将文件存储在 storage/app/public ,要让这些文件可以通过web访问到,需要创建一个软链 public/storage 指向 storage/app/public ,这种方式可以将公开访问的文件保存在一个可以很容易被不同部署环境共享的目录,在使用零停机时间部署系统如Envoyer的时候尤其方便。

获取文件
get 方法用于获取指定文件
__exists__方法用于判断给定文件是否存在于磁盘上:

$contents = Storage::get('file.jpg');
$exists = Storage::disk('s3')->exists('file.jpg');

文件上传

在web应用中,最常见的存储文件案例就是存储用户上传的文件,如用户头像、照片和文档等。Laravel通过使用上传文件实例上的store方法让存储上传文件变得简单。你只需要传入上传文件保存的路径并调用store方法即可:

$path = $request->file('avatar')->store('avatars');

指定文件名

$path = $request->file('avatar')->storeAs(
    'avatars', $request->user()->id
);

文件删除

Storage::delete(['file1.jpg', 'file2.jpg']);

自定义文件上传
使用Laravel文件上传很方便,在开发中我们需要创建软连接,但是有可能具体项目中不需要创建软连接,或者需要直接在公共盘 public 下面就能直接访问文件,这个时候就需要调整一下配置文件。

默认的驱动是__local__ 驱动 (config/filesystems.php):

'disks' => [

    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
    ],

    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'visibility' => 'public',
    ],

    's3' => [
        'driver' => 's3',
        'key' => 'your-key',
        'secret' => 'your-secret',
        'region' => 'your-region',
        'bucket' => 'your-bucket',
    ],

],

我们增加一条驱动信息:

    'root' => [
        'driver' => 'local',
        'root' => base_path(''),
    ],
    'local' => [
        'driver' => 'local',
        'root' => public_path(''),
    ],

这样该驱动指向项目根目录,然后我们在上传处理函数中:

$path = $request->file('avatar')->store(
    'public/avatars/test.png', 'root'
);

判断文件是否存在或者删除文件时:

Storage::disk('root')->delete($imagePath);

base_path 就是项目根目录
app_path 就是项目下App文件夹
storage_path 就是项目下的storage文件夹

1、获取上传的文件

$file=$request->file('file');
2、获取上传文件的文件名(带后缀,如abc.png)

$filename=$file->getClientOriginalName();
3、获取上传文件的后缀(如abc.png,获取到的为png)

$fileextension=$file->getClientOriginalExtension();
4、获取上传文件的大小

$filesize=$file->getClientSize();
5、获取缓存在tmp目录下的文件名(带后缀,如php8933.tmp)

$filaname=$file->getFilename();
6、获取上传的文件缓存在tmp文件夹下的绝对路径

$realpath=$file->getRealPath();
7、将缓存在tmp目录下的文件移到某个位置,返回的是这个文件移动过后的路径

$path=$file->move(path,newname);
move()方法有两个参数,第一个参数是文件移到哪个文件夹下的路径,第二个参数是将上传的文件重新命名的文件名

8、检测上传的文件是否合法,返回值为true或false

$file->isValid()

转 https://blog.csdn.net/guawawa311/article/details/83057983

https://laravelacademy.org/post/19509.html

https://www.cnblogs.com/blog-dyn/p/10310393.html

免责声明:文章转载自《Laravel--文件管理及上传自定义目录及文件名》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HTML5 plus是什么?Android空指针异常的常见情况下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

在Win98上手工制作单张“网络软盘”

  1.      制作一张普通的DOS启动软盘 这一步与前面“四/2”一样。下面我们将该软盘称为“网络软盘”。 2.      拷贝现成的14个网络文件 找一张Windows NT Server 4.0中文版的安装光盘放入光驱中,将光盘根目录下\CLIENTS\MSCLIENT\NETSETUP子目录中的14个网络文件EMM386.EXE、HIMEM.S...

转:openwrt 框架分析

本文是本人对OpenWrt的Makefile的理解,并非转载。OpenWrt是一个典型的嵌入式Linux工程,了解OpenWrt的Makefile的工作过程对提高嵌入式Linux工程的开发能力有极其重要意义。OpenWrt的主Makefile文件只有100行,可以简单分为三部分,1~17行为前导部分,19~31为首次执行部分,33~101为再次执行部分。前...

apache+php+mysql配置

---------------------------------------------------- ★软件工具:(下载时注意下载相应版本,不同版本安装细节可能会有差异!!) 1>httpd-2.4.18-win64-VC14.zip下载地址:http://www.apachelounge.com/download/ 2>php-5.6.16...

rsync用于同步目录

rsync是unix/linux下同步文件的一个高效算法,它能同步更新两处计算机的文件与目录,并适当利用查找文件中的不同块以减少数据传输。rsync中一项与其他大部分类似程序或协定中所未见的重要特性是镜像是只对有变更的部分进行传送。rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。rsync利用由Andrew Tridgell...

Linux下NFS配置及远程挂载

NFS配置及远程挂载 NFS简介  NFS是Network File System的简写,即网络文件系统。NFS最早是由 Sun Microsystems 公司开发,并于1984年推出。NFS 是一种可分散式的网络文件系统,可以通过网络(一个局域网)使不同的机器、不同的操作系统,能够共享目录和文件,使客户端能通过网络访问并分享文件到位于服务端的磁盘中。NF...

Linux 环境下 node 以及 jit 的简单环境配置说明

注意事项: 1. 注意这个包需要实时更新. 2. 更新时需要按照目录覆盖文件. 3. 谁负责谁治理的态度, 有更新,需要完整的进行覆盖安装. 建议先删除旧文件, 替换新文件. 4. 为了简单起见, 直接将部署文件放到了 /nodejs 这个目录下面 1. 解压缩文件到相应的路径, 如图示 建议方法为 直接将压缩包放到 / 目录下面 执行命令 t...