请教LARAVEL6 上传文件使用Storage门面的putFile put方法保存文件时,文件后缀与源文件不匹配的问题

<?php

return [
   'disks' => [
        //...
        'oss' => [
            'driver' => 'oss',
            'root' => 'qsmile', // 设置上传时根前缀
            'access_key' => env('OSS_ACCESS_KEY','**********'),
            'secret_key' => env('OSS_SECRET_KEY','**********'),
            'endpoint'   => env('OSS_ENDPOINT','http://oss-cn-hangzhou.aliyuncs.com'), // 使用 ssl 这里设置如: https://oss-cn-beijing.aliyuncs.com
            'bucket'     => env('OSS_BUCKET','qsmile'),
            'isCName'    => env('OSS_IS_CNAME', false), // 如果 isCname 为 false,endpoint 应配置 oss 提供的域名如:`oss-cn-beijing.aliyuncs.com`,否则为自定义域名,,cname 或 cdn 请自行到阿里 oss 后台配置并绑定 bucket
            // 如果有更多的 bucket 需要切换,就添加所有bucket,默认的 bucket 填写到上面,不要加到 buckets 中
            'buckets'=>[
                'test'=>[
                    'access_key' => env('OSS_ACCESS_KEY'),
                    'secret_key' => env('OSS_SECRET_KEY'),
                    'bucket'     => env('OSS_TEST_BUCKET'),
                    'endpoint'   => env('OSS_TEST_ENDPOINT'),
                    'isCName'    => env('OSS_TEST_IS_CNAME', false),
                ],
                //...
            ],
        ],
        //...
    ]
];
        <form method='post' action='{{route("admin.file.up")}}' enctype='multipart/form-data'>
            @csrf
            <div class="form-group row">
                <label class="col-2 col-form-label">选择文件</label>
                <div class="col-10">
                    <input type="file" class="form-control-file" name=filename />
                    @error('filename')
                    <small class="form-text text-danger">{{$message}}</small>
                    @else
                    <small class="form-text text-muted">请上传扫描3D文件stl格式,核对好时间版本、用户名</small>
                    @enderror
                </div>
            </div>

            <div class="form-group row">
                <div class='offset-2'></div>
                <div class="col-10">
                    <button type="submit" class="btn btn-primary">提交</button>

上传代码:

        $file=$request->file('filename');
        $disk = Storage::disk('oss');
        $disk->put('baochiqi',$file); 

正在学习中的,谢谢~
之前练习的时候用这个方法可以实现上传的,上传到服务器也是原文件。
今天在另一个练习里边,上传doc文件,到了OSS那里就成了txt了。但是奇怪的时候,我上传jpg 或是els文件,OSS里边又是正常的原文件。
现在的问题就是上传文件,部分自动变更了后缀名,请教大家,谢谢!

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 2
李威

提供的信息量太少了,或者你多贴一点核心代码看看

4个月前 评论
芝麻开门 (楼主) 4个月前
李威 (作者) 4个月前
李威 (作者) 4个月前
芝麻开门 (楼主) 4个月前

laravel使用Storage门面的putFile方法保存文件时,文件后缀与源文件不匹配的问题
www.jianshu.com/p/4d55efa9a62c
在网上查到了别人也遇到这个问题,通过类似的方法去修改了,上传后的文件还是存在问题,比如上传了docx文件,上传后的文件是docx文件,但是文件本身内容已经发生了变化,不是原文件了。

        $dataNewName = $time . '.' . $request->file('filename')->getClientOriginalExtension();
        $path = $disk->putFileAs('baochiqi', $request->file('filename'), $dataNewName);
4个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!