我有一个关于使用 PHP 为我的大学创建文件上传网站的项目。对于每个上传的文件,网站必须检查上传的文件是否损坏。我一直在寻找,一无所获。
问问题
5514 次
1 回答
3
用于检查 PDF 文件是否损坏。
读取 PDF 文件的前五个字节。如果读取的字符串是%PDF-
,则文件未损坏,否则已损坏。
这是工作代码:
<?php
$fp = fopen('mypdffile.pdf', 'r');
// move to the 0th byte
fseek($fp, 0);
$data = fread($fp, 5); // read 5 bytes from byte 0
if(strcmp($data,"%PDF-")==0)
{
echo "The PDF File is not Corrupted.";
}
else
{
echo "The PDF File is Corrupted.";
}
fclose($fp);
?>
解释: 使用 notepad++ 打开任何未损坏的文件,您会注意到打开文件的前五个字节等于后面的子字符串“%PDF-”。这只是有效 PDF 文件的标题格式,我们可以利用它来测试文件是否损坏。
用于检查 .docx 文件是否损坏
DOCX 文件为 ZIP 格式,其中前两个字节是字母 PK(以 ZIP 的创建者 Phil Katz 命名)。
所以修改上面的代码:
fseek($fp, 0);
$data = fread($fp, 2); // read 2 bytes from byte 0
if(strcmp($data,"PK")==0)
{
echo "The docx File is not Corrupted.";
}
else
{
echo "The docx File is Corrupted.";
}
于 2013-05-14T17:49:22.047 回答