laravel使用input接收上传文件并获取文件信息
【laravel使用input接收上传文件并获取文件信息】引入相关的类
use Illuminate\Support\Facades\Input;
// 接收数据
$file = Input::file(file_data);
//检验一下上传的文件是否有效.
if($file->isValid()){
echo '文件已经上传';
}
//获取上传文件的文件名
$clientName = $file->getClientOriginalName();
//获取缓存在tmp文件夹中的文件名 例如:php5730.tmp
$tmpName = $file->getFileName();
//这个表示的是缓存在tmp文件夹下的文件的绝对路径
//例如我的是: C:\Windows\php7A.tmp
//这里要注意,如果我使用接下来的move方法之后, getRealPath() 就找不到文件的路径了.因为文件已经被移走了. 所以这里道出了文件上传的原理,将文件上传的某个临时目录中,然后使用Php的函数将文件移动到指定的文件夹.
$realPath = $file->getRealPath();
//上传文件的后缀,例如txt
$entension = $file->getClientOriginalExtension();
//获取文件的mimeType,我得到的结果是 image/jpeg.
//这里要注意一点,以前我们使用 mime_content_type() ,
//在php5.3 之后,开始使用 fileinfo 来获取文件的mime类型。所以要加入php_fileinfo的php拓展。
//windows下是php_fileinfo.dll,在php.ini文件中将extension=php_fileinfo.dll前面的分号去掉即可
//当然要重启服务器.
$mimeTye = $file->getMimeType();
//最后我们是移动文件导指定的目录
//如果你这样写的话,默认是会放置在 我们 public/storage/uploads/php79DB.tmp
$path = $file->move('storage/uploads');
//如果我们希望将其放置在app的storage目录下的uploads目录中,并且需要改名的话..
//这里app_path()就是app文件夹所在的路径.
$path = $file->move(app_path().'/storage/uploads', $newName);
//$newName可以是你通过某种算法获得的文件的名称
//主要是不能重复产生冲突即可
//比如 $newName = md5(date('ymdhis').$clientName).".".$extension;
//利用日期和客户端文件名结合
//使用md5算法加密得到结果。
//记得在后面加上文件原始的拓展名
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件
- android|android studio中ndk的使用
- 使用协程爬取网页,计算网页数据大小