大きなファイルスライスアップロードが48MBを超えるファイルを処理できない問題を解決する方法は?
48MBの制限を突破する:大きなファイルスライスをアップロードする問題を解決する
大きなファイルスライスをアップロードする過程で、48MB以上のファイルを処理できない状況に遭遇しますか?この記事では、問題の根本原因を分析し、フロントエンド、バックエンド、サーバーの構成でソリューションを提供します。
問題分析
48番目のスライス(約48MB)の後、大きなファイルをアップロードするとき、その後の要求は500エラーを返します。スライスサイズが調整されていても、40MBの制限を超えることはできません。これは、問題がサーバー側またはバックエンド処理ロジックにある可能性があり、詳細なトラブルシューティングが必要であることを示しています。
フロントエンドコードの最適化
まず、フロントエンドコードを確認します。以前のコードは、スライスが送信されるたびに同じformDataオブジェクトを使用する場合があり、データの蓄積がサーバーの制限を超えます。
解決策:アップロード機能が呼び出されるたびに、 FormDataオブジェクトを再作成します。このようにして、各要求には現在のスライスデータのみが含まれており、データの蓄積を回避します。
サンプルコードスニペット( sendfile
機能の改善):
関数sendfile(blob、file){ if(is_stop == 0){ var xhr = new xmlhttprequest(); var form_data = new formdata(); // formdataオブジェクトを再作成するvar total_blob_num = math.ceil(file.size / length); form_data.append( 'file'、blob); form_data.append( 'blob_num'、blob_num); form_data.append( 'total_blob_num'、total_blob_num); form_data.append( 'file_name'、file.name); xhr.open( 'post'、 '/upload.php'、false); xhr.onedeadystatechange = function(){ // ...(コードの残りの部分は同じままです)... }; xhr.send(form_data); //リクエストを送信} }
バックエンドコードの改善
バックエンドコードは、大きなファイルをメモリ内で直接処理するため、メモリオーバーフローを引き起こす可能性があります。ストリーミングまたは一時的なファイルの合併を使用することをお勧めします。各スライスを一時ファイルに保存し、最終ファイルにマージします。
サンプルコードスニペット(PHP、 fileMerge
関数の改善):
プライベート機能filemerge(){ if($ this-> blobnum == $ this-> totalblobnum){ $ out = fopen($ this-> filepath。 '/'。$ this-> filename、 'wb'); // 'WB'モードを使用して、($ i = 1; $ i totalblobnum; $ i)のバイナリセキュリティを確保する $ chunk = fopen($ this-> filepath。 '/'。$ this-> filename。 '__'。$ i、 'rb'); // 'rb'モードを使用して、バイナリデータstream_copy_to_stream($ chunk、$ out)を読み取ります。 // stream_copy_to_streamを使用して、fclose($ chunk)を効率的にコピーします。 @unlink($ this-> filepath。 '/'。$ this-> filename。 '__'。$ i); } fclose($ out); } }
サーバー構成チェック
フロントエンドとバックエンドのコードが微調整されていても、問題はまだ存在する可能性があります。次のサーバー構成を確認する必要があります。
- Apacheの
LimitRequestBody
設定:この値が大きなファイルのアップロードを可能にするのに十分な大きさであることを確認してください。 - php
upload_max_filesize
およびpost_max_size
設定:これらの2つの値は、アップロードされたファイルのサイズよりも大きくなければなりません。 - PHPの
memory_limit
設定:バックエンドがメモリ内のファイルを処理する場合、この値を増やす必要があります。
要約と提案
大きなファイルのスライスアップロードの問題を解決するには、フロントエンド、バックエンド、およびサーバーの構成を包括的に検討する必要があります。 FormDataオブジェクトを再現し、ストリーミングまたは一時ファイルのマージとサーバー構成の調整を使用することにより、48MBを超えるファイルをアップロードする問題を効果的に解決し、効率的な大きなファイルアップロード機能を達成できます。
以上が大きなファイルスライスアップロードが48MBを超えるファイルを処理できない問題を解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Stock Market GPT
AIを活用した投資調査により賢明な意思決定を実現

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

KeepAliveonは、持続的な接続を有効にします。 2.maxkeepaliverequests100接続あたりのリクエストの最大数を設定します。 3.KeePalivetimeout5後続のリクエストを待つためのタイムアウトを設定し、構成後にApacheを再起動し、Curlまたはブラウザ開発者ツールを使用して、KeepAliveがサーバーのパフォーマンスを最適化するために効果的かどうかを確認します。

最初に、filefifythelibphp.sofileexistsusingfindorlocatecommands;

CertbotとそのApacheプラグインをインストールします。 2。証明書を取得してドメイン名を構成するためにcertbotを実行します。 3.オプションで、HTTPからHTTPSへの自動リダイレクトを構成します。 4.自動更新をセットアップし、ドライランテストに合格します。 5.インストールを確認し、Apacheの通常のリロード構成を確認します。証明書が正常に展開されると、更新は自動的に管理されます。プロセス全体が完了すると、安全なHTTPSアクセスを実現できます。

Ondebian/ubuntu、themainapacheconfigurationfileis/etc/apache2/apache2.conf、withditionalconfigurationsin/etc/apache2/sites-av Ailable/and/etc/etc/apache2/conf-Abailable/.2.onrhel/centos/fedora、itistypically/etc/httpd/conf/httpd.conf、wedextrafilesin/etc/h

thedefaultapacheportforhttpis80.1.port80isusedhused forunencrafficandistandistandard forwebserversincludingapache.2

toblockanipinapache2.4 、usetherequireatewithinablock、suchasrequireallgrantededrequirenotip192.168.1.100toblockasingLip、asubnetlike192.168.1、ormultiplespecificipsbyRepeatingtherequireenotipline、2.placetheruleinsidea、or blockinevirtipline

Windowsファイルマネージャーは、ファイル管理のみを担当し、ファイルの内容を処理しないため、ファイル形式をバッチで直接変換することはできません。 IRFANVIEWやFFMPEGなどのサードパーティツールを使用して、ファイルマネージャーと組み合わせてファイルをフィルタリングおよびインポートし、グラフィカルインターフェイスまたはコマンドラインを介して変換を完了するために効率的なバッチ変換を実現する必要があります。コマンドラインツールには、自動化、高効率、正確な制御の利点がありますが、学習コスト、エラー処理、ファイルバックアップに注意を払う必要があります。

installapachusingpackagemanagercommandsforyouros、startandenablethesersivice.2.placewwebsitefilesedededefaultdirectory/var/www/html/、setproperownershipandpermissionsbasedonyoursystem(www-dataforubuntu、apacheforcentos
