laravel文件上传方法(目前只掌握三种,持续更新)

本文规则:遵循post请求规则。$commodities为Model
必须:enctype="multipart/form-data"
本文涉及的依赖:

use Storage;
use Illuminate\Http\File;
use Illuminate\Http\Request;
use Illuminate\Http\UploadedFile;

一:

一般文件上传思想:获取上传文件<strong>--></strong>判断是否有错<strong>--></strong>编写需要存储后文件名<strong>--></strong>移动文件到存储地址<strong>--></strong>写入数据库

        $commodities  = new Commodity;
        $result       = $commodities->fill($request->all());
        $file         = $request->file('picture');
        // 文件是否上传成功
        if($file->isValid()){
            // 获取文件相关信息
            $originalName = $file->getClientOriginalName(); // 文件原名

            // 上传文件,没有使用PHP的默认单个POST请求发送的最大数据8M,而是改成了12M
            $fileName     = uniqid() . $originalName;
            $movePath     = $file->move(storage_path('app\uploads'),$fileName);
            $saveDir      = $movePath->getPath();
            $savePath     = $saveDir . $fileName;
            // 使用put()集合函数将$filename作为文件名,file_get_contents()将文件的内容读入一个字符串
            // $bool = Storage::disk('public')->put($filename, file_get_contents($realPath));
        
        }
        $result['picture'] = $savePath;
        if ($result->save()) {

这种方式很粗鲁,但是不符合laravel的优雅

二:直接调用store(),会返回处理后的路径,具体实现请看UploadedFile.php,这个方法产生的文件名是随机生成的哦
$commodities  = new Commodity;
        //store()中的picture是文件夹名,不存在时自动创建在store\app
        $path         = $request->file('picture')->store('picture');
        $result       = $commodities->fill($request->all());
        $result['picture'] = $path;   //替换数组V
        dd($result->save());    //返回true,就代表成功了
三:storeAs()路径、文件名、磁盘(可选的)作为它的参数
$commodities  = new Commodity;
        //store()中的picture是文件夹名,不存在时自动创建在store\app
        $path         = $request->file('picture')->storeAs('picture','asdf');
        $result       = $commodities->fill($request->all());
        $result['picture'] = $path;   //替换数组V
        dd($result->save());    //返回true,就代表成功了

有错误请开启extension=php_fileinfo.dll扩展
另外,温馨提示:
上传文件的自定义名不要带原文件名,会出原文件名是中文的时候乱码bug!
希望本文对你有帮助;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,401评论 25 709
  • 先说几句废话,调和气氛。事情的起由来自客户需求频繁变更,伟大的师傅决定横刀立马的改革使用新的框架(created ...
    wsdadan阅读 3,123评论 0 12
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,246评论 19 139
  • 农历新年终于到来了。 无论你是在期盼等待、隆重迎接、热闹团聚中,还是在无聊厌倦、孤单逃离、无意义的消磨中,农历新年...
    子芸简书阅读 279评论 0 1
  • 自从遇到你, 我的PH 总是小于7。
    似与游者相乐阅读 236评论 0 0