jQuery の Ajax ファイル アップロード、PHP に忠実なファイル アップロードの実装方法。
AJAX アップロード ファイル、PHP アップロード ファイル。
【PHPファイルアップロード】
始める前に、WEB を介してファイルをアップロードする原理を簡単に説明する必要があると思います。
実際には、ここでアップロードされたファイルを処理するのが PHP であっても、JSP であっても、ASP であっても、WEB は既にファイルをサーバーにアップロードしています。アップロードされたファイルを処理するためにアップロード処理関数を使用するだけです。
処理機能は通常、PHP、JSP、ASPなどのサーバーサイド言語を使用して実装されます。では、WEB (HTTP プロトコル?) 経由でファイルをアップロードするには、次のような HTML コードが必要です:
test.html
注: enctype="multipart/form-data" は必須です。これは、リクエストが成功すると、ファイルがサーバーの一時フォルダーにアップロードされることを FORM テーブルに伝えます。 🎜>ファイルが宛先に到着した後にどのように処理されるかについては、PHP、JSP、ASP の問題です。
(ただし、あまり早く喜びすぎないでください。ファイルが他の場所に移動されたり名前が変更されなかった場合、ファイルはフォームリクエストの最後に削除されます。そのため、アップロードされたファイルを処理するスクリプトを作成する必要があります。ファイル)
ここでは PHP を使用して処理します
do_file_upload.php
{
switch($_FILES[$fileElementName]['error'])
{
$error = '転送されたファイルは php.ini の Upload_max_filesize オプションの制限を超えています';
Break;
case '2':
$error = 'アップロードされたファイルのサイズが、HTML フォームの MAX_FILE_SIZE オプションで指定された値を超えています';
Break;
case '3':
$error = 'ファイルの一部のみがアップロードされました';
Break;
case '4':
$error = 'ファイルがアップロードされていません';
Break;
$error = '一時フォルダーが見つかりません';
ブレーク;
case '7':
$error = 'ファイルの書き込みに失敗しました';
ブレーク;
デフォルト:
$error = '不明なエラー';
}
}elseif(empty($_FILES['fileToUpload']['tmp_name']) || $_FILES[ 'fileToUpload' ]['tmp_name'] == 'none')
{
$error = 'ファイルがアップロードされていません。';
}else if(!in_array($fileSuffixName,$allowType))
{
$error = 'アップロードできないファイルの種類';
}else{
);
if($ok === FALSE){
$error = 'アップロードに失敗しました';
}
}
?>
別の注意: $_FILES 配列について
この配列には、アップロードされたすべてのファイル情報が含まれており、ファイルのアップロード時に関連情報が記録されます。
上記の例の $_FILES 配列の内容は次のとおりです。上の例に示すように、ファイル アップロード フィールドの名前が userfile であると仮定します。名前は何でも構いません。
$_FILES['userfile']['name']
クライアント マシン ファイルの元の名前。
$_FILES['userfile']['type']
ファイルの MIME タイプ (ブラウザーがこの情報を提供する場合)。例は「画像/gif」です。ただし、この MIME タイプは PHP 側ではチェックされないため、鵜呑みにしないでください。
$_FILES['userfile']['size']
アップロードされたファイルのサイズ (バイト単位)。
$_FILES['userfile']['tmp_name']
ファイルのアップロード後にサーバーに保存される一時ファイル名。
$_FILES['userfile']['error']
ファイルのアップロードに関連するエラー コード。このプロジェクトは PHP バージョン 4.2.0 で追加されました。
【AJAXファイルアップロード】
実際には、更新のないファイルのアップロードを実現するためです。 IFRAME ファイルのアップロード原則を使用できます。
実はPHPでファイルをアップロードするとき。 。 。 $_FILES 形式のみを使用できますが、..document.getElementById('img').value のように JS を使用して ID を取得するだけの場合は、フォーム内の jquery $("#img") は実際にはアップロードできません (ただし、最初の私を含め、これを実行している人はまだたくさんいます)。
しかし、この機能にはいわゆる「非同期アップロード」の実装も必要です。どうすればよいでしょうか? ?サードパーティのコンポーネントを使用するか、自分でコンポーネントを作成する (Web ページに IFRAME を埋め込む) ことのみ可能です。ただし、開発時間を考慮する場合は、「ajaxfileupload.js」という優れた jQuery Ajax ファイル アップロード コンポーネントを使用できます。そのコンポーネントのダウンロード アドレスは http://www.phpletter.com/ です。ダウンロード後にPHPアプリケーションのデモが入っており、わかりやすいです。
プロセス:
(1) フロントエンドのファイルのコード: test.php
対応する HTML は次のとおりです:
このようなゲスト端末は完了しました。
(2) 再サービス端末時間 doajaxfileupload.php
ここは、便宜的な転送が真正であるかどうかを確認するために保存しておくことができます。 d:file_infor.php ".$file_infor);
这样你打来刚生成的file_infor.php文件時,你又看到了熟尽的信息了: