前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP上传文件仿微信文件名命名

PHP上传文件仿微信文件名命名

作者头像
用户4973967
发布2019-12-16 15:47:48
8610
发布2019-12-16 15:47:48
举报
文章被收录于专栏:胡六娃的博客

在做文件上传时遇到一个需求,上传时判断文件名称是否重复,如果重复则在后面标记数字,重新命名后继续上传。

比如文件名为“测试.jpg”,上传时假如该文件存在,则改名为“测试(1).jpg”上传。

下面为代码展示

效果图

代码语言:javascript
复制
   public function uploadFile(Request $request)
    {
        // $data = json_decode(file_get_contents("php://input"), true);
        $userId = request()->userid;
        if (!$userId) return $this->responseJson(self::CODE_USER_NOT_EXIST, trans('api.user.notExist'));
        $file = $request->file('file');
        Log::channel('notify')->info($file);
        //获取文件名 
        $fileName = $file->getClientOriginalName();
        $fileSize = $file->getClientSize();
        $fileType = $file->guessClientExtension();
        $path = 'upload\\' . $userId . '\\';

        //判断文件是否存在
        $exists = Storage::disk('public')->exists($path . $fileName);

        if ($exists) {
            //存在,改名
            $houzhui = '.' . substr(strrchr($fileName, '.'), 1);
            $result = substr($fileName, 0, '-' . strlen($houzhui));
            for ($i = 1; $i < 1000; $i++) {
                $saveName = iconv("utf-8", "gb2312", $result . '(' . $i . ')' . $houzhui);
                $exists = Storage::disk('public')->exists($path . $saveName);
                if (!$exists) {
                    $fileName =  $result . '(' . $i . ')' . $houzhui;
                    $name = $result . '(' . $i . ')' . $houzhui;
                    break;
                }
            }
        }

        $upload = $request->file('file')->storeAs(
            'public',
            $path . $fileName
        );

    } 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-09-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档