0

私自身も、この会社で 7 年以上勤務している上級開発者も解決できない問題に出くわしています。PHP は、フォームの送信後に $_POST が空であることを報告しています。大多数のユーザーは Windows XP と IE8 を使用していますが、この OS とブラウザーの組み合わせだけで問題が発生していることに注意してください。また、毎日 125 ~ 150 件のアップロードがあり (主に IE8 を使用)、週に 3 ~ 5 人のユーザーのみが問題を経験しています。私が話した 1 人のユーザーは、過去に複数のドキュメントを問題なく正常にアップロードし、同じコンピューターで先週ドキュメントをアップロードできませんでした。

POST データを含まない IE8 からのフォーム送信で問題を経験した人はいますか?

私たちの会社には、複数のファイルをアップロードするための jQuery UI ダイアログにロードされたアップロード フォームがあり、基本的な進行状況メーターとキャンセル ボタンがあります。コードは長く、いくつかのファイルに散らばっています。そのため、現時点ではコピー アンド ペーストしないことを選択していますが、簡潔に説明するために最善を尽くします。

<div id="dialog_div">
<div id="form_container">
    <form>
    </form>
</div>
<div id="progress_div">
</div>
</div>

フォームには 5 つのファイル入力と送信ボタンがあり、最初は無効になっていて、1 つ以上のファイルが選択されている場合にのみ有効になります。プログレス div が非表示になり、フォームが表示され、送信時にフォームが非表示になり、プログレス div が表示されます。setTimeout() を使用すると、進行状況 div が 2 秒ごとに更新され、アップロードされた割合とキャンセル ボタンが表示されます。PHP のセッション アップロードの進行状況を使用して、アップロードを追跡し、最大サイズを超えていないことを確認しています。最大サイズを超えた場合、XHR はクライアント側で中止されます。キャンセル ボタンをクリックすると、大きすぎるファイルのアップロードを中止するために使用されるものと同じ JS 関数が実行されます。キャンセル ボタンをクリックすると、フォームを受け取る PHP スクリプトは実行されないため、エラー ログには何も表示されません。

紛らわしいのは、$_POST が空であるため、フォームを受信する PHP スクリプトがログに「フォームが受信されていません」というエラーを生成していることです。ユーザーが問題を抱えているファイルは大きすぎず、スタッフは同じファイルを使用して同じインターフェースを介してアップロードを行うことができました. キャンセルボタンをクリックすると、スクリプトが実行されないため、アップロードが中止されても問題はないと考えています。

コミュニティからのアイデア?

4

1 に答える 1

2

同様の問題が突然発生し、ファイルのアップロードで約3%の失敗率が発生しました。他の人との問題はありません。クライアントを選択するだけです。

この問題は、インターネット接続の不良とクライアント側のタイムアウトが原因でした。したがって、私たちが行ったことは、すべてをカスタムplupload(http://www.plupload.com/)実装に置き換えることでした。このようにして、ファイルはクライアント側で小さなチャンクに分割され、サーバーにアップロードされて再結合されます。これで問題が修正されたので、試してみる価値があるかもしれません。

于 2013-01-22T19:15:51.140 に答える