从文件名中删除特殊字符

埃米尔·盖尔·维尔姆森

我正在建立一个可供人们上传图像的网站。但是,当最终用户上载包含特殊字符或外来字符的图像时,该图像确实会上载,但无法在网站上显示,就像服务器上不存在该图像一样。

我看到很多人在另一个帖子上回答说我需要使用 preg_replace

但问题是,我真的不知道如何使用它。我将如何在代码中使用它。

这是我的控制器方法:

public function upload(Requests\CreatePostsRequest $request)
{
        $target_dir = "uploads/";
        $target_file = $target_dir . basename($_FILES['fileToUpload']["name"]);
        $uploadOk = 1;
        $findme   = ".";
        $pos = strpos($target_file, $findme);
        //echo $target_file;
        //dd($_POST);
        echo ini_get('upload_max_filesize');
        echo $_FILES["fileToUpload"]["error"];
        $imageFileType = strtolower(substr($target_file,$pos+1));
        if(isset($_POST["submit"])) {
            $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
                //$check = true;
                //dd($check);
            if($check !== false) {
                echo "File is an image - " . $check["mime"] . ".";
                $uploadOk = 1;
            } else {
                echo "File is not an image.";
                $uploadOk = 0;
            }
        }
        $filecheck = 0;
        $orgFileName = $target_file;
        while (file_exists($target_file)) {
            $target_file = substr($orgFileName,0,$pos).$filecheck.substr($orgFileName,$pos);
            $filecheck++;

            $uploadOk = 1;
        }

        if ($_FILES["fileToUpload"]["size"] > 500000000*8) {
            echo "Sorry, your file is too large.";
            $uploadOk = 0;
        }

        if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
        && $imageFileType != "gif" ) {
            echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
                echo $imageFileType;
            $uploadOk = 0;
        }

        if ($uploadOk == 0) {
            echo "Sorry, your file was not uploaded.";

        } else {
            if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
                echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";

                        $post = new Posts($request->all());
                        $post->fileToUpload = $target_file;
                        Auth::user()->posts()->save($post);
            } else {
                echo "Sorry, there was an error uploading your file.";
            }
        }
        return redirect('');
        echo $target_file;
    }
马格努斯·埃里克森

使用preg replace:

$target_file = $target_dir . preg_replace("/[^a-z0-9\_\-\.]/i", '', basename($_FILES['fileToUpload']["name"]));

这将删除所有不是字母(az),数字(0-9)或破折号,下划线或点的字符(我们要保留文件扩展名)。最后的i标志使比赛区分大小写。

更新

为了使表达式更短,可以将a-z0-9\_-part替换为token \w
模式将是:/[^\w\-\.]/在这里,我们不需要i标志,因为令牌一词会为我们处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从文件名中删除特殊字符

来自分类Dev

无法删除文件名中包含特殊字符的文件

来自分类Dev

无法删除文件名中包含特殊字符的文件

来自分类Dev

在Linux中批量删除文件名中的特殊字符

来自分类Dev

在Windows中从文件名中批量删除特殊字符

来自分类Dev

从powershell中的文件名中删除特殊字符

来自分类Dev

删除文件名中带有特殊字符的目录

来自分类Dev

Powershell从文件名中删除特殊字符

来自分类Dev

从文件名中删除某些特殊字符

来自分类Dev

文件名Java中的特殊字符

来自分类Dev

如何从PHP表单文件上传的文件名中删除特殊字符,例如撇号/引号

来自分类Dev

无法删除/移动文件名中带有特殊字符的文件

来自分类Dev

正则表达式从Windows的文件名中删除特殊字符

来自分类Dev

Django从文件名中删除“ @”和其他特殊字符

来自分类Dev

如何使用命令从文件名中删除特殊字符?

来自分类Dev

尝试从文件名中批量删除不可见的特殊字符

来自分类Dev

在Perl中以特殊字符打开文件名中的文件

来自分类Dev

删除文件名中的特定字符

来自分类Dev

更改bash中具有特殊字符的文件名

来自分类Dev

文件名中的特殊字符(\#033OA)

来自分类Dev

bash-处理文件名中的特殊字符

来自分类Dev

终端命令:处理文件名中的特殊字符

来自分类Dev

文件名和路径中的特殊字符

来自分类Dev

从NSString删除一些附加在电子邮件中的文件名PDF的特殊字符

来自分类Dev

带有特殊字符的文件名

来自分类Dev

无法从文件名读取特殊字符

来自分类Dev

从文件名javascript中删除非法字符

来自分类Dev

如何从文件名中删除非ASCII字符?

来自分类Dev

如何删除Bash文件名中的结尾字符?

Related 相关文章

热门标签

归档