PHP让mime_type无法正常工作

时间:2015-10-27 14:09:41

标签: php api

我正在尝试使用virustotal API来上传要扫描的文件。但是,当我使用API​​中的代码时,我收到错误消息。 使用的代码是:

public function scanFile($filePath) {
        if (!file_exists($filePath)) {
            return array(
                    'response_code' => -4
                );
        }

        $realPath = realpath($filePath);

        if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
            $pathInfo = pathinfo($realPath);
            $fileName = $pathInfo['basename'];
            $finfo = finfo_open(FILEINFO_MIME_TYPE);
            $parameters = array(
                    'file' => '@' . $realPath . ';' .
                    'type=' . finfo_file($finfo, $fileName) . ';' .         
                    'filename=' . $fileName
                );
        } else {
            // Due to a bug in some older curl versions
            // we only send the file without mime type or file name.
            $parameters = array(
                    'file' => '@' . $realPath
                );
        }

        return $this->_doCall(VirusTotalAPIV2::URL_SCAN_FILE, $parameters);
    }

正在返回的错误消息是:

Warning: finfo_file(facebook.apk): failed to open stream: No such file or directory in C:\Users\User\Desktop\Android App Security\xampp\htdocs\androidapp\VirusTotalApiV2.php on line 48
stdClass Object ( [response_code] => 0 [verbose_msg] => Invalid submission format, the uploaded file must travel as a multipart MIME message, please review the documentation )

第48行是这一行:

'type=' . finfo_file($finfo, $fileName) . ';' . 

我真的很难过,非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

问题是您为finfo_file的第二个参数传递了一个基名。这就是为什么你有“没有这样的文件”错误,因为这个文件在另一个目录中。

解决方案只是使用$ realPath for finfo_file()。