下载器代码可能有问题,导致PDF文件损坏
服务器中的PDF文件是健康的:通过FTP直接下载来验证过。
下载器的部分代码如下:
$file_size = filesize($filedir);
header("Content-type: application/octet-stream;charset=ISO-8859-1");
header("Cache-control: private");
header("Accept-Ranges: bytes");
header("Accept-Length: ".$this->FjSize);
header("Content-Disposition: attachment; filename=" . $this->delFileName);
$fp = fopen($filedir,"r");
$buffer_size = 1024;
$cur_pos = 0;
while(!feof($fp) && $filedir-$cur_pos > $buffer_size)
{
$buffer = fread($fp,$buffer_size);
echo $buffer;
$cur_pos += $buffer_size;
}
if($file_size > 0)
$buffer = fread($fp,$file_size-$cur_pos);
else
$buffer = fread($fp,$this->FjSize);
echo $buffer;
fclose($fp);
flush();
回复讨论(解决方案)
$fp = fopen($filedir,"r b"); //二进制方式打开,虽然 linux 不需要,但仍建议这么做
文本方式打开的文件,0x1a 就视为文件尾了
while(!feof($fp) && $filedir-$cur_pos > $buffer_size)
宜写作
while(!feof($fp))
feof($fp) 就是文件尾了
再 $filedir-$cur_pos > $buffer_size 已无必要
双重判断可能导致失误,比如 $filedir 不是 $buffer_size 整数倍时
另外,除文件内容外,不能输出任何其他内容,包括 BOM 头
按照版主说的改了。照样出错。
PS:程序过去一年都运行良好,最近几天才出问题。
上传了一个文件,内容如下
1234567890
abcdefghijklmnopqrstuvwxyz
然后下载到本地,结果如下
? 2426153钒4噱JLJNIMK先淌紊退/(,*.)-+?? ?? ??&

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Alipay PHP ...

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.

Eine offizielle Einführung in das nicht blockierende Merkmal der detaillierten Interpretation der nicht blockierenden Funktion von ReactPhp hat viele Fragen vieler Entwickler gestellt: "Reactphpisnon-BlockingByDefault ...
