0

ユーザーがファイルを送信できるようにするPHPコードがいくつかあります。その後、ZIP ファイルをダウンロードできます。Winrar で Windows を使用している場合、問題なく解凍され、ファイルを開くことができ、それで問題ありません。これを複数のコンピューターでテストしました。

winrar がなく、Windows 8 または Windows 7 (または OSX) のデフォルトの解凍ツールを使用すると、zip ファイルが無効であるというメッセージが表示されます。

見つけられなかった既知の問題はありますか? この動作の原因を知っている人はいますか?

ありがとう、

ここに出力zipへのリンクがあります。 https://www.dropbox.com/s/imvzixl3y3l12l1/TestAreaForMax-aa-57.zip

4

1 に答える 1

3

あなたのコードと ZIP ファイルを見なければ、誰も確かなことはわかりませんが、同様の問題があったことを思い出し、スクリプトがいくつかのエラー メッセージをスローしていて、生成された ZIP アーカイブになってしまったようです。一部の解凍ではこれから回復できましたが、他の解凍では回復しなかったため、ZIP ファイルを任意のテキスト エディターで開き、ファイルの先頭に PHP 警告メッセージのようなものがないかどうかを確認することをお勧めします。

編集

通常の zip ファイルは"PK". あなたのファイルはそうで始まる" PK"ので、本当にそれが必要でない限り?>、zipファイルを生成するPHPスクリプトから削除します(そして、すべてのスクリプトからこれを削除することをお勧めします)。後に潜む?>

PHP コード ブロックにいる場合、空白は何もしません。しかし、配置?>することで、スクリプトがいつ終了するかを PHP に伝えます。また、PHP コード ブロックの外側では、空白がクライアントに送信されています。したがって、キープ?>し、スペースがその後にある場合は、送信されます。また、スクリプトの出力がダウンロード可能なものである場合、そのスペースはユーザーが保存したバイト ストリームに「結合」します。?> を削除することで、コードがどこで終了するかを明示的に PHP に伝えることはありません。その場合、ソース ファイルの終わりで自動的に終了します。そして、空白は通常、エディターの設定により「見えない」ため、追跡するのが難しいです(そのため、構文の強調表示を設定して、背景色とは異なる色で空白を表示します)

一般に、上記の理由から、?>PHP コードを何か (つまり HTML) と混ぜない場合は、常に使用しないことをお勧めします。保存時に末尾の空白を自動トリミングするようにエディターを構成すると常に役立ちます

于 2012-12-02T19:33:08.373 に答える