修改现有的PHP代码以删除文件(如果存在)?

时间:2016-03-17 15:25:39

标签: php joomla

我一直在尝试修改此函数以删除文件,如果文件已经存在但它不能正常工作,它仍然会创建一个带()数字的新文件。我试过包括以下内容:

$exists_file = $upload_dir.$uploaded_file;
if file_exists($exists_file) {
unlink($exists_file);
}

但它只是阻止文件上传。我还在学习php,我真的想解决这个问题。我的基本目标是覆盖现有文件,而不是在文件已存在的情况下将数字附加到末尾。

    protected function handle_file_upload($uploaded_file, $name, $size, $type, $error,
            $index = null, $content_range = null) {
            $file = new stdClass();
            $file->name = $this->get_file_name($name, $type, $index, $content_range);
            $file->size = $this->fix_integer_overflow(intval($size));
            $file->type = $type;
            if ($this->validate($uploaded_file, $file, $error, $index)) {
                $this->handle_form_data($file, $index);
                $upload_dir = $this->get_upload_path();
                if (!is_dir($upload_dir)) {
                    mkdir($upload_dir, $this->options['mkdir_mode'], true);
                }
                $file_path = $this->get_upload_path($file->name);
                $append_file = $content_range && is_file($file_path) &&
                    $file->size > $this->get_file_size($file_path); 
                 //Tried my code here
                 $exists_file = $upload_dir.$uploaded_file;
                if file_exists($exists_file) {
                unlink($exists_file);
                    }     
                if ($uploaded_file && is_uploaded_file($uploaded_file)) {
                    // multipart/formdata uploads (POST method uploads)
                    if ($append_file) {
                        file_put_contents(
                            $file_path,
                            fopen($uploaded_file, 'r'),
                            FILE_APPEND
                        );
                    } else {
                        move_uploaded_file($uploaded_file, $file_path);
                    }
                } else {
                    // Non-multipart uploads (PUT method support)
                    file_put_contents(
                        $file_path,
                        fopen('php://input', 'r'),
                        $append_file ? FILE_APPEND : 0
                    );
                }
                $file_size = $this->get_file_size($file_path, $append_file);
                if ($file_size === $file->size) {
                    $file->url = $this->get_download_url($file->name);
                    list($img_width, $img_height) = @getimagesize($file_path);
                    if (is_int($img_width) &&
                            preg_match($this->options['inline_file_types'], $file->name)) {
                        $this->handle_image_file($file_path, $file);
                    }
                } else {
                    $file->size = $file_size;
                    if (!$content_range && $this->options['discard_aborted_uploads']) {
                        unlink($file_path);
                        $file->error = 'abort';
                    }
                }
                $this->set_additional_file_properties($file);
            }
            return $file;
        }

有什么想法吗?

最诚挚的问候 娜

0 个答案:

没有答案