您的位置:首页 > 其它

无刷新上传图片,ajax 和 iframe

2017-07-21 15:00 323 查看
iframe 上传

upload.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>

<iframe id="upload_target" name="upload_target" src="upload.php" style="width:0;heigth:0;overflow:hidden;border:0;position: absolute; left:-500px;"></iframe>
<img id="tag_img" src="http://avatar.csdn.net/C/2/1/1_shenlingsuifeng.jpg" />
<form enctype="multipart/form-data" action="upload.php" method="post" target="upload_target">
<input type="file" id="fileipt" name="userfile" class="file" value=""  />
<input type="submit" name="uploadimg" value="上传" id="submit" hidden />
</form>

<script type='text/javascript'>
var lastFileName;
$("#fileipt").change(function() {
var fileName = $(this).val();
var pos = fileName.lastIndexOf("\\");
fileName = fileName.substr(pos+1, fileName.length);  // 截取出文件名 因为会带路径
lastFileName = fileName;
$("#submit").click();
});

function stopSend($url) {
$("#tag_img").attr("src",$url);
}

</script>

</body>
</html>
upload.php
<?php
/**
* Created by PhpStorm.
* User: chenxiaolong
* Date: 7/21/17
* Time: 10:24
*/
//var_dump($_FILES);
$file=$_FILES['userfile'];
if($file['size'] != 0) {
$name=rand(0,500000).dechex(rand(0,10000)).".jpg";
move_uploaded_file($file['tmp_name'],$name);
if($name) {
echo "<script>parent.stopSend('$name')</script>";
}
}


ajax 无刷新上传图片
<button id="J_headimg" style="font-size: 12px;margin-left: 10px;width: 70px;height: 30px;background: #10AD5A;color: #fff;">修改头像</button>
<input type="file" name="pic" id="pic" hidden accept="image/*" />
<input type="text" id="headimg" name="headimg" hidden>

<script>
$("#J_headimg").click(function() {
$("#pic").click();
return false;
});
$("#pic").change(function() {
var $that = $(this);
var imgPath = $(this).val();
if (imgPath == "") {
alert("请选择上传图片!");
return;
}
//判断上传文件的后缀名
var strExtension = imgPath.substr(imgPath.lastIndexOf('.') + 1);
if (strExtension != 'jpg' && strExtension != 'gif'
&& strExtension != 'png' && strExtension != 'bmp' && strExtension != 'jpeg') {
alert("请选择图片文件");
return;
}
var formData = new FormData();
formData.append('file', $that[0].files[0]);// php 用$_FILES['file']接收
console.log($that[0].files[0]);
$.ajax({
type: "POST",
url: "__URL__/uploadimg",
data: formData,
cache: false,
processData: false,// 需要加这两个参数
contentType: false,
success: function(data) {
var obj = JSON.parse(data);
if(obj.status == 0) {
$("#preimg").attr("src","Public/Upload/" + obj.data);
$("#headimg").val(obj.data);
} else {
alert(obj.data);
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("上传失败,请检查网络后重试");
}
});
});

</script>
对应uploadimg方法
public function uploadimg() {
$file = $_FILES['file'];
$arr = array('jpg'=>'image/jpeg','png'=>'image/png','gif'=>'image/gif','bmp'=>'image/bmp');
if($ext = array_search($file['type'],$arr)) {
$rand = uniqid();
$filename = "Public/Upload/avatar/{$rand}.{$ext}";
} else {
exit(json_encode(array('status'=>2,'data'=>'只支持图片上传')));
}
$r = move_uploaded_file($file['tmp_name'],$filename);
if($r) {
exit(json_encode(array('status'=>0,'data'=>"avatar/$rand.$ext")));
} else {
exit(json_encode(array('status'=>1,'data'=>'上传失败')));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  上传图片 无刷新