ホームページ  >  記事  >  ウェブフロントエンド  >  jQuery Ajax ファイルのアップロード (php)_jquery

jQuery Ajax ファイルのアップロード (php)_jquery

WBOY
WBOYオリジナル
2016-05-16 18:51:26910ブラウズ

jQuery の Ajax ファイル アップロード、PHP に忠実なファイル アップロードの実装方法。
AJAX アップロード ファイル、PHP アップロード ファイル。

【PHPファイルアップロード】

始める前に、WEB を介してファイルをアップロードする原理を簡単に説明する必要があると思います。
実際には、ここでアップロードされたファイルを処理するのが PHP であっても、JSP であっても、ASP であっても、WEB は既にファイルをサーバーにアップロードしています。アップロードされたファイルを処理するためにアップロード処理関数を使用するだけです。
処理機能は通常、PHP、JSP、ASPなどのサーバーサイド言語を使用して実装されます。では、WEB (HTTP プロトコル?) 経由でファイルをアップロードするには、次のような HTML コードが必要です:
test.html

コードをコピー コードは次のとおりです:


画像:

< input type= "submit" value="Send" />



注: enctype="multipart/form-data" は必須です。これは、リクエストが成功すると、ファイルがサーバーの一時フォルダーにアップロードされることを FORM テーブルに伝えます。 🎜>ファイルが宛先に到着した後にどのように処理されるかについては、PHP、JSP、ASP の問題です。
(ただし、あまり早く喜びすぎないでください。ファイルが他の場所に移動されたり名前が変更されなかった場合、ファイルはフォームリクエストの最後に削除されます。そのため、アップロードされたファイルを処理するスクリプトを作成する必要があります。ファイル)
ここでは PHP を使用して処理します
do_file_upload.php

コードをコピー コードは次のとおりです:
$error = "" ; //ファイルのアップロード エラー メッセージ
$msg = "";
$fileElementName = 'picture';
$allowType = array(".jpg",".gif",".png "); //アップロードできるファイルの種類
$num = strrpos($_FILES['picture']['name'],'.');
$fileSuffixName = substr($_FILES['picture '][' name'],$num,8);//この数値は変数です
$fileSuffixName = strto lower($fileSuffixName) //アップロードされたファイルの種類を決定します

$upFilePath = ' d:/'; //最終的なストレージパス

if(!empty($_FILES[$fileElementName]['error']))

{
switch($_FILES[$fileElementName]['error'])
{

case '1':

$error = '転送されたファイルは php.ini の Upload_max_filesize オプションの制限を超えています';
Break;
case '2':
$error = 'アップロードされたファイルのサイズが、HTML フォームの MAX_FILE_SIZE オプションで指定された値を超えています';
Break;
case '3':
$error = 'ファイルの一部のみがアップロードされました';
Break;
case '4':
$error = 'ファイルがアップロードされていません';
Break;

case '6':

$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文件時,你又看到了熟尽的信息了:


复制代代码如下:

array(
'name'=>'lamp.jpg',
'type'=>'image/pjpeg',
'tmp_name'=>'c: windowstempphpFA.tmp',
'error'=>0,
'size'=>3127
)


もちろん、実際の処理は同様です

コードをコピー コードは次のとおりです。

< ?php
$upFilePath = "d:/";
);
if($ok === FALSE){
echo json_encode('file_infor'=>'アップロード失敗');
}else {
echo json_encode('file_infor'=>'アップロード成功');
}
?>


別のメモ: 実はでは、IFRAME をページに埋め込み、IFRAME のネイティブ POST フォームを使用して送信できます。この JQUERY プラグインもこの方法を使用します。それは動的に生成された IFRAME とフォームであるというだけです

原文: http://fc-lamp.blog.163.com/blog/static/1745666872009519310153/
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。