ファイルをアップロードするには、一般に 2 つの方法があります:
2種類あります:
1. 標準の入力フォーム方法。通常は $_FILES を使用して受信します。
2. Base64 モードで送信します。通常は AJAX 非同期アップロードです。
ファーストタイプ
標準入力フォーム方式は大きなファイルのアップロードに適しており、バッチ処理をサポートしています。 HTML コードのいくつかの重要な文:
リーリー
リーリー
Enctype="multipart/form-data" はファイルのアップロードに必須です。また、type="file" で入力タイプを設定し、accept="image/*" で画像アップロード時の優先順位を指定します(MIME リファレンスマニュアル)。 Multiple は一度に複数のファイルを選択することをサポートしており、pic[] は複数のファイルを配列の形式で受け取ります。モバイル端末は、パラメータ Capture="camera" を追加して、写真を撮影してアップロードするカメラを選択することもできます。バックエンド処理:
$_FILES を通じてアップロードされたファイルを取得します。
$files = $_FILES;
複数のファイルを転送する場合、名前が異なると、返される $_FILES 配列の形式も異なります。
リーリー
名前が異なる場合:
リーリー
リーリー
さて、バックエンドが受け取った $_FILES 配列をどのように処理し、統一された形式に変換するかについて説明しました。次のタスクは主に次のとおりです:
1. アップロードされたファイルが違法かどうかを確認します
2. アップロードされたファイルがサイズを超えているかどうかを確認します。
3. 保存されたパスが存在するかどうか、および書き込み可能かどうかを確認します。
4. ファイルの名前変更
アップロードプロセスでは非常に重要な関数 move_uploaded_file(filename, $destination) が使用され、ファイルの移動操作が実行されます。 $_FILES['id_pic']['tmp_name'] を新しいパスに移動します。もちろん、移動する前に、 is_uploaded_file($_FILES['id_pic']['tmp_name']) を使用して、ファイルが正常にアップロードされたかどうかを確認できます。
2番目のタイプ
主に写真をアップします。
入力の変更イベントを使用して、canvas で画像を処理 (圧縮など) し、ajax 経由でファイル ストリームをバックエンドに送信します。
基本原理は、canvas を通じて画像をレンダリングし、toDataURL メソッドを通じてそれを圧縮し、base64 文字列として保存することです (jpg 形式の画像にコンパイルできます)。
バックエンドは最終的に、フロントエンドによって送信されたbase64文字列を受信し、その文字列を画像に処理します。具体的には、Google|Baidu のイメージ開発言語にキーワード「base64」を使用してください。フロントエンドによって生成された結果には文字列の長さであるbase64Lenがあり、バックエンドは送信が完了したかどうかを確認する必要があります。
リーリー
以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いです。
興味がありそうな記事: