原生ajax和iframe框架实现图片文件上传的两种方式
大家应该可以举出几种常用的异步文件上传功能的实现方式,使用频率较多的有原生ajax和iframe框架,实现图片文件上传,下面就为大家分享图片文件上传的两种方式:原生ajax和iframe框架,供大家参考,具体内容如下
方法一:利用iframe框架上传图片
html代码如下:
<divclass="frm"> <formname="uploadFrom"id="uploadFrom"action="upload.php"method="post"target="tarframe"enctype="multipart/form-data"> <inputtype="file"id="upload_file"name="upfile"> </form> <iframesrc=""width="0"height="0"style="display:none;"name="tarframe"></iframe> </div> <divid="msg"> </div>
index.js文件:
$(function(){
$("#upload_file").change(function(){
$("#uploadFrom").submit();
});
});
functionstopSend(str){
varim="<imgsrc='upload/images/"+str+"'>";
$("#msg").append(im);
}
upload.php文件:
<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>";
?>
方法二:原生态ajax文件上传
<!DOCTYPEhtml>
<html>
<head>
<title>Html5Ajax上传文件</title>
<metacharset="utf-8">
<scripttype="text/javascript">
varxhr;
functioncreateXMLHttpRequest()
{
if(window.ActiveXObject)
{
xhr=newActiveXObject("Microsoft.XMLHTTP");
}
elseif(window.XMLHttpRequest)
{
xhr=newXMLHttpRequest();
}
}
functionUpladFile()
{
varfileObj=document.getElementById("file").files[0];
varFileController='upload.php';
varform=newFormData();
form.append("myfile",fileObj);
createXMLHttpRequest();
xhr.onreadystatechange=handleStateChange;
xhr.open("post",FileController,true);
xhr.send(form);
}
functionhandleStateChange()
{
if(xhr.readyState==4)
{
if(xhr.status==200||xhr.status==0)
{
varresult=xhr.responseText;
varjson=eval("("+result+")");
alert('图片链接:n'+json.file);
}
}
}
</script>
<style>
.txt{height:28px;border:1pxsolid#cdcdcd;width:670px;}
.mybtn{background-color:#FFF;line-height:14px;vertical-align:middle;border:1pxsolid#CDCDCD;height:30px;width:70px;}
.file{position:absolute;top:0;right:80px;height:24px;filter:alpha(opacity:0);opacity:0;width:260px}
</style>
</head>
<body>
<divclass="form-group">
<labelclass="control-label">图片</label>
<br/>
<inputtype='text'name='textfield'id='textfield'class='txt'/>
<spanonclick="file.click()"class="mybtn">浏览...</span>
<inputtype="file"name="file"class="file"id="file"size="28"onchange="document.getElementById('textfield').value=this.value"/>
<spanonclick="UpladFile()"class="mybtn">上传</span>
</div>
</body>
</html>
php代码:
<?php
if(isset($_FILES["myfile"]))
{
$ret=array();
$uploadDir='images'.DIRECTORY_SEPARATOR.date("Ymd").DIRECTORY_SEPARATOR;
$dir=dirname(__FILE__).DIRECTORY_SEPARATOR.$uploadDir;
file_exists($dir)||(mkdir($dir,0777,true)&&chmod($dir,0777));
if(!is_array($_FILES["myfile"]["name"]))//singlefile
{
$fileName=time().uniqid().'.'.pathinfo($_FILES["myfile"]["name"])['extension'];
move_uploaded_file($_FILES["myfile"]["tmp_name"],$dir.$fileName);
$ret['file']=DIRECTORY_SEPARATOR.$uploadDir.$fileName;
}
echojson_encode($ret);
}
?>
以上就是本文的全部内容,希望对大家学习理解ajax和iframe框架实现图片文件上传有所帮助。