具有特定扩展名的文件未附加

时间:2016-06-29 06:46:13

标签: php

我正在创建一个表单,我可以在其中附加文件。但是,具有.xls,.sql等特定扩展名的文件没有附加。但是,像.docx,.pdf等其他文件正在附加。这就是我尝试的方式:

function file_upload($control_id, $target_directory) {
        if(isset_file($control_id)) {       
            if(file_exists($target_directory) == false) {
                mkdir($target_directory, 0777, true); //to be create the directory recursively
            }

            $file_name = basename($_FILES[$control_id]["name"]); //to be get file name
            write_log($file_name);
            $file_extension = pathinfo($file_name, PATHINFO_EXTENSION); //to be get file extension
            write_log($file_extension);
            $file_size = $_FILES[$control_id]["size"]; //to be get file size in bytes
            write_log($file_size);

            $target_file_name = round(microtime(true) * 1000).".".$file_extension;  //to be get target file name
            $target_file_path = $target_directory.$target_file_name; //to be get target file

            if(file_exists($target_file_path) == true) {
                chmod($target_file_path, 0755); //Change the file permissions if allowed
                unlink($target_file_path); //remove the file
            }

            if (move_uploaded_file($_FILES[$control_id]["tmp_name"], $target_file_path) == true) {
                $arr = array(
                    "status" => true, 
                    "message" => "The file ".$file_name." has been uploaded.", 
                    "file_name" => $file_name, 
                    "file_extension" => $file_extension,
                    "file_size" => $file_size,
                    "uploaded_file_name" => $target_file_name,
                    "uploaded_file_path" => $target_file_path
                );
            } else {
                $arr = array(
                    "status" => false, 
                    "message" => "Sorry, there was an error uploading your file."
                );
            }
        } else {
            $arr = array(
                "status" => false, 
                "message" => "Please select file"
            );
        }

        //echo json_encode($arr);
        return $arr;
    }
$id = intval(mysqli_real_escape_string($mysqli, $_REQUEST["id"]));
        $upload_directory = "uploads/attachments/";
        $result = file_upload("contract_attachment", "../".$upload_directory);
        if($result[status] == true) {
            $query = "insert into `attachments` 
            (
                `id`, 
                `file_name`, 
                `file_extension`, 
                `file_size`, 
                `uploaded_file_name`, 
                `uploaded_file_path`
            ) 
            values 
            (
                'id', 
                '".addslashes($result['file_name'])."', 
                '".$result[file_extension]."', 
                '".$result[file_size]."', 
                '".$result[uploaded_file_name]."', 
                '".$upload_directory.$result[uploaded_file_name]."'
            )";
            mysqli_query($mysqli, $query) or throwexception(mysqli_error($mysqli));
        }
        echo json_encode(array("message" => "Record submitted successfully"));
        exit;

问题是,当我尝试附加扩展名为.xls或.sql的文件时,$ file_name,$ file_extension,$ file_size将获得一个值。例如,如果我附加的文件是format.xls,则显示$file_name = format, $file_extension = .xls and $file_size = 0。由于它所采用的文件大小为零,因此条件" $结果[状态]"失败。因此,该文件没有附加。 如果我附加.pdf或.docx等文件,我会得到正确的值。例如,如果我附加了format.pdf之类的文件,则会显示$file_name = format, $file_extension = .pdf, $file_size = 9824。该文件也随之附加。

但是,我不知道这段代码有什么问题,因为扩展名为.xls和.sql的文件没有附加。有人可以纠正这个并告诉它有什么不对吗?

0 个答案:

没有答案