private function read_doc($filename) {
$fileHandle = fopen($filename, "r");
var_dump($filename);
$line = fread($fileHandle, filesize($filename));
$lines = explode(chr(0x0D), $line);
$outtext = "";
foreach ($lines as $thisline) {
$pos = strpos($thisline, chr(0x00));
if (($pos !== FALSE) || (strlen($thisline) == 0)) {
} else {
$outtext .= $thisline . " ";
}
}
$outtext = preg_replace("/[^a-zA-Z0-9\s\,\.\-\n\r\t@\/\_\(\)]/", "", $outtext);
return $outtext;
}
我正在尝试使用上面的代码阅读.doc
的内容..但是当我运行上面的代码时,它给了我
filesize(): stat failed for http://localhost/jobportal/public/uploads/document/1.doc
和
fread(): Length parameter must be greater than 0
答案 0 :(得分:1)
正如您在此处所见http://php.net/manual/en/function.filesize.php:
从PHP 5.0.0开始,此函数也可以与某些URL包装器一起使用。请参阅支持的协议和包装器以确定哪些包装器支持stat()系列功能。
如果您要转到此链接http://www.php.net/manual/en/wrappers.http.php,您会看到Supports stat()为“NO”。因此,您无法使用具有filesize
功能的http链接。如果这是本地文件,只需使用文件的绝对或相关路径,如'/path/to/my/file'
,如果这是远程文件(不确定但是),我认为应首先使用curl
和curl_getinfo
下载函数读取Content-Length http属性
答案 1 :(得分:0)
filesize(): stat failed for http://localhost/jobportal/public/uploads/document/1.doc
表示:您正在尝试获取不适用的网址文件大小。
您需要从块中读取数据直到结束并检查实际提交的数据量。
答案 2 :(得分:0)
if($ext == 'doc'){
if(file_exists($filename) ) {
if(($fh = fopen($filename, 'r')) !== false ) {
$headers = fread($fh, 0xA00);
$n1 = ( ord($headers[0x21C]) - 1 );
$n2 = ( ( ord($headers[0x21D]) - 8 ) * 256 );
$n3 = ( ( ord($headers[0x21E]) * 256 ) * 256 );
$n4 = ( ( ( ord($headers[0x21F]) * 256 ) * 256 ) * 256 );
$textLength = ($n1 + $n2 + $n3 + $n4);
$content_of_file1 = fread($fh, $textLength);
$content_of_file = strtolower($content_of_file1);
}
}
}