現在、一般的に使用されている非同期ファイル アップロード関数は、iframe フレームワーク、ajax 関数エフェクト、および flash+php 関数の使用です。以下は、ajax と iframe によって実装された非同期ファイル アップロード関数の例です。
方法 1、jquery ajaxfileupload.js を使用してファイルをアップロードします
実際には、更新不要のファイルアップロードを実現するためです。 IFRAME ファイルのアップロード原則を使用できます。
実際にPHPでファイルをアップロードするとき。 。 。 $_FILES 形式のみを使用できますが、..document.getElementById('img').value のように JS を使用して ID を取得するだけの場合は、フォーム内の jquery $("#img") は実際にはアップロードできません (ただし、最初の私を含め、これを実行している人はまだたくさんいます)。
しかし、この機能にはいわゆる「非同期アップロード」の実装も必要です。どうすればよいでしょうか?サードパーティのコンポーネントを使用するか、自分でコンポーネントを作成する (Web ページに IFRAME を埋め込む) ことのみ可能です。ただし、開発時間を考慮する場合は、サードパーティを使用することをお勧めします。これは、「ajaxfileupload.js」という優れた jQuery Ajax ファイル アップロード コンポーネントです。そのコンポーネントのダウンロード アドレスは、http://files.jb51.net/ です。 file_images /article/201306/js/ajaxfileupload.js
プロセス:
(1) フロントエンドファイルコード:test.php
コードをコピーします コードは次のとおりです:
これでクライアントが完成しました。
(2)サーバー側のdoajaxfileupload.php
ここに値が本当に渡されたかどうかを簡単に検出するために、値を保存できます。
コードをコピーします コードは次のとおりです:
$file_infor = var_export($_FILES,true);
file_put_contents("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
)
もちろん、実際の処理は次のようになります:
コードをコピーします コードは次のとおりです:
$upFilePath = "d:/";
$ok=@move_uploaded_file($_FILES['img']['tmp_name'] ,$upFilePath) ;
if($ok === FALSE){
echo json_encode('file_infor'=>'アップロード失敗');
}else{
echo json_encode('file_infor'=>'アップロード成功' );
}
?>
方法 2、iframe フレームワークを使用して写真をアップロードします
HTMLコードは次のとおりです:
コードをコピー コードは次のとおりです:
index.js ファイル:
コードをコピーします コードは次のとおりです:
$(function(){
$("#upload_file").change(function(){
$("#uploadFrom").submit() ;
}) ;
});
function stopSend(str){
var im="
";
$("#msg").append (私);
}
upload.php ファイル:
コードをコピーします コードは次のとおりです:
$file=$_FILES['upfile'];
$name=rand(0,500000).dechex(rand(0,10000)).".jpg";
move_uploaded_file($file[' tmp_name'],"upload/images/".$name);
//iframe 親ウィンドウの js 関数を呼び出します
echo "<script>parent.stopSend('$name')</script>";
?>
方法3、オリジナルのAjaxファイルのアップロード
lt;meta charset= "utf-8">
var xhr; function createXMLHttpRequest() { if(window.ActiveXObject) xhr = new ActiveXObject ( "Microsoft.XMLHTTP " );
var fileObj = document.getElementById("file").files[0 ];
var FileController = 'upload.php';
var form = new FormData ();
form.append(" myfile", fileObj); ;
xhr.open( "post", FileController, true);
== 200 || xhr .status == 0)
+json.file);
14px;vertical-align:中央;ボーダー:1px;高さ:30px;幅:70px;}
位置:絶対;右:80px;フィルター:アルファ(不透明度:0); ;width:260px }