我正在尝试使用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) . ';' .
我真的很难过,非常感谢你的帮助。
答案 0 :(得分:0)
问题是您为finfo_file的第二个参数传递了一个基名。这就是为什么你有“没有这样的文件”错误,因为这个文件在另一个目录中。
解决方案只是使用$ realPath for finfo_file()。