无法使用自定义php函数上传文件

时间:2018-12-02 02:51:07

标签: php file-upload

我尝试使用函数通过赋予变量来上传不同类型的文件。如下图所示:

<?
function fn_fileUpload($data,$dir,$uid){
    include_once($_SERVER['DOCUMENT_ROOT']."/cgi-bin/connect.php");
    if(isset($data) && $data['error'] === UPLOAD_ERR_OK){
        $fileTmpPath = $data['tmp_name'];
        $fileName = $data['name'];
        $fileSize = $data['size'];
        $fileType = $data['type'];
        $fileNameCmps = explode(".", $fileName);
        $fileExt = strtolower(end($fileNameCmps));
        $newFileName = $uid . '.' . $fileExt;
        //check file ext
        $okEXT = array('jpg', 'jpeg', 'png','doc','docx','pdf');
        if (in_array($fileExt, $okEXT)) {
            $fileDir = '/'.$dir.'/';
            $dest_path = $fileDir.$newFileName;          
            if(move_uploaded_file($fileTmpPath, $dest_path)){
                try{
                    $stmt2=$mysqli->prepare("insert into job_file (jfile_id, job_id, jfile_name, jfile_size, jfile_type, jfile_ext) valies(?,?,?,?,?,?)");
                    $stmt2->bind_param('iisiss',$zero,$uid,$newFileName,$fileSize,$fileType,$fileExt);
                    $stmt2->execute();
                    $result = 'ok';
                }catch(mysqli_sql_exception $err){
                    $result=$err;
                }
            }else{
              $result = 'Cannot upload file!';
            }
        }//in_array
    }//if(isset
    return $result;
}
?>

这是使用方法:

//upload file
$job_file=fn_fileUpload($_FILES['job_file'],'uploads',$_POST['passport_id']);
//upload photo
$job_img=fn_fileUpload($_FILES['job_img'],'photos',$_POST['passport_id']);

函数从此处始终返回:Cannot upload file!。起初我认为。它可能与move_uploaded_file有关,但是文件位于/uploads目录中,而与/photos没有关系。两个目录CHMOD 755(尝试过777,但没有运气)。

数据库正确通过。有什么办法解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您只能在通过表单上传的临时文件上使用move_uploaded_file()一次。此功能会在移动临时文件后将其销毁,因此对于上载目录中的第一个上载,您可以做得很好,但对于第二个上载的文件,则可以做得很好。