ホームページ バックエンド開発 PHPチュートリアル 非同期ファイルのアップロードを実装するための PHP ベースの AJAX テクノロジー_PHP チュートリアル

非同期ファイルのアップロードを実装するための PHP ベースの AJAX テクノロジー_PHP チュートリアル

Jul 13, 2016 am 10:30 AM
ajax php web アップロード に基づく 成し遂げる 応用 非同期 テクノロジー 書類 モダンな

非同期ファイルのアップロードは頻繁に発生する問題であり、最新の AJAX 実装 Web アプリケーションでは解決する必要があります。ただし、AJAXの標準クラス(XmlHttpRequest)ではファイル転送の機能を実現できません。したがって、ここで説明するのは、AJAX テクノロジに基づいて非同期ファイル アップロード機能を構築する方法です。この機能では、ファイルを転送するために組み込みのフレームと (IFRAME) を使用する必要があります。この機能の効果は、ページがファイルをアップロードしているときに、ユーザーもそのページを使用してファイルの説明を入力できることです。

この例は、AJAX の古典的なケースを引用して分析されています。

システム環境

・ブラウザの新しいバージョン。たとえば、Opera、Firefox、Internet Explorer などです。

・PHP 4.3.0以降

・PHP 5バージョン

・PHPの「short_open_tag」オプションがオンになっています(そうしないと解析エラーが発生します)。

機能分析

組み込みの IFRAME (フレームワーク) を通じてファイルをアップロードします。 3 つの部分から構成されます。

・ページの中央に簡単なコントロールがあります。このフォームのターゲット リンクは非表示の IFRAME (CSS スタイル "display: none;" によって実装) であり、フォーム内の唯一のコントロールの OnChange イベントを使用して JavaScript 関数がトリガーされます。この機能の目的は、ユーザーが送信した拡張子を確認し、フォームを送信することです。

・サーバー側で処理プロセスをPHPで記述しました(FILEFRAMEでアノテーションを付けました)。このプロセスは、クライアントからアップロードされたファイルを確認し、サーバーに保存し、JavaScript コードの形式でユーザーに返すために使用されます。ユーザーに返される Javascript は、「parent.window.document」を介してユーザーが現在表示しているページを変更し、ファイル名を設定し、ユーザーがフォームを送信できるボタンを有効にします。ボタンを有効にする操作は、getElementById 関数を通じて実装されます。

・メインページにもフォームがあり、ユーザーが送信した説明と隠しファイル名が含まれています。ユーザーは、ファイルをアップロードするときにファイルの説明を入力できます。ファイルのアップロードが完了したら、ユーザーはボタンをクリックして、アップロード後にユーザーに返されたファイル情報を表示します。 (ファイル情報は、返されたファイル名とユーザーが入力した説明で構成されます)。

おそらく、この操作は不合理であると言うかもしれません。ユーザーが確認する前にファイルが送信されています。ユーザーが送信しない場合はどうなりますか。ユーザーが放棄したファイルは拡張機能内で自分で扱うことができます。

この例では、ファイル システム ディレクトリにファイルを保存します。このディレクトリ情報を含む特定の変数は、$upload_dir と $web_upload_dir です。スクリプトの実行を開始するときに、このディレクトリを構成する必要があります。ディレクトリが書き込み可能かどうかを確認するためのアクセス許可チェックがあります。

ここでは次のPHP関数を使用します:

· move_uploaded_file - サーバーにアップロードされたファイルを移動します

・ fopen - ファイルを開きます

・fwrite - コンテンツをファイルに書き込みます

・fclose - ファイルを閉じます

· str_replace - 文字列を置換します

· filesize - ファイルサイズを返します

· filemtime - 戻り処理時間

これらの機能の使用方法はマニュアルで確認できます。 HTM (<、>、&) タグを (<、>、&) に置き換えてください。

ソースコード

$upload_dir = "/var/www/anyexample/aeu" // ファイルが保存されているパス

;

$web_upload_dir = "/aeu" // Webディレクトリ内のファイルのパス

;

$tf = $upload_dir.'/'.md5(rand()).".test";

$f = @fopen($tf, "w");

if ($f == false)

die("致命的なエラー! {$upload_dir} は書き込み可能ではありません。「chmod 777 {$upload_dir}」を設定してください

またはこのようなもの");

fclose($f);

リンクを解除($tf);

//アップロードされたファイルを処理します

if (isset($_POST['fileframe']))

{

$result = 'エラー';

$result_msg = 'FILE フィールドが見つかりません';

if (isset($_FILES['file'])) // ブラウザからファイルを受け入れる

{

if ($_FILES['file']['error'] == UPLOAD_ERR_OK) // エラーなし

{

$filename = $_FILES['file']['name'] // ファイル名

;

move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir.'/'.$filename);

// 主な処理の流れ - $upload_dirにファイルを転送

$result = 'OK';

}

elseif ($_FILES['file']['error'] == UPLOAD_ERR_INI_SIZE)

$result_msg = 'アップロードされたファイルがphp.iniのupload_max_filesizeディレクティブを超えています';

その他

$result_msg = '不明なエラー';

}

エコー '';

エコー

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/767402.html技術記事非同期ファイルのアップロードは頻繁に発生する問題であり、最新の AJAX 実装 Web アプリケーションでは解決する必要があります。ただし、AJAXの標準クラス(XmlHttpRequest)ではファイル転送の機能を実現できません。なぜなら…
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

See all articles