我正在考虑下载文件,以便稍后再次上传到API以检查文件是否是恶意的。
首先,如果文件名 扩展名在URL中很容易,但是看到并非总是如此,我不知道给我的确切文件名和扩展一个临时,我将无法为其分配文件扩展名。
是否有可能以某种方式在响应中获取此文件名?或至少是扩展名,因此我可以在再次上传之前将其添加到临时文件中。
这是我目前拥有的(我知道我目前正在使用tmpfilename,但是一旦我知道如何检查文件扩展程序,这种情况就会改变(:
public function download($url, $tmpfilename, $method)
{
$client = new Client([
// Base URI is used with relative requests
'base_uri' => $url,
'sink' => $tmpfilename,
]);
try {
$response = $client->request($method);
if (is_bool($response)) {
return $response;
} else {
return $response->getBody()->getContents();
}
} catch (GuzzleHttpExceptionClientException $e) {
return false;
} catch (GuzzleHttpExceptionRequestException $e) {
return false;
}
}
您可以使用Content-Type
响应标头猜测文件扩展名。
例如,使用Ralouphie/Mimey进行转换:
$extension = $mimes->getExtension($response->getHeaderLine('Content-Type'));