>  기사  >  백엔드 개발  >  PHP에서 아바타 업로드 미리보기 기능 구현 예

PHP에서 아바타 업로드 미리보기 기능 구현 예

黄舟
黄舟원래의
2017-08-13 09:21:291817검색

미리보기가 포함된 PHP 아바타 업로드:

사진 업로드는 누구나 익숙합니다. 그러나 향후 프로젝트에서는 아바타 업로드와 같은 페이지 새로고침 방법을 사용하여 사진을 업로드하는 것이 허용되지 않을 수도 있습니다. 앨범에서 사진을 선택한 후 업로드를 확인하세요. 양식을 통해 제출을 클릭해도 새로고침 방식으로 업로드되지는 않습니다. 두 개의 비동기 비새로고침 업로드 사진 + 사진 미리보기를 소개하겠습니다. 첫 번째는 이미 만들어진 uploadfy 플러그인을 통해 업로드하는 것입니다. 인터넷에는 많은 예가 있습니다. 하지만 제가 중점적으로 소개해드릴 것은 두 번째 방법인 Ajax를 통해 이미지를 업로드하는 방법입니다. uploadfy 플러그인을 사용하려면 장치가 swf 형식의 Flash를 지원해야 하기 때문에 첫 번째 방법은 대부분의 휴대폰에서 사용할 수 없습니다. 먼저 업로드 원칙에 대해 말씀드리겠습니다. js를 통해 파일 텍스트 필드를 제어하고, 사진을 선택한 후 Ajax를 통해 비동기적으로 양식을 제출한 다음, 사진의 위치를 ​​반환 값으로 사용하여 설정합니다. img의 src 속성을 반환 값으로 지정합니다.

업로드 아바타 영역:

코드:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>

<link href="bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="bootstrap-3.3.7-dist/js/jquery-1.11.2.min.js"></script>
<script src="bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>

<style type="text/css">
#yl{ width:200px; height:200px; background-image:url(img/avatar.png); background-size:200px 200px;}
#file{ width:200px; height:200px; float:left; opacity:0;}
.modal-content{ width:500px;}
.kk{ margin-left:130px;}
</style>

</head>

<body>



<!-- 按钮触发模态框 -->
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
    上传头像
</button>
<!-- 模态框(Modal) -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
                    &times;
                </button>
                <h4 class="modal-title" id="myModalLabel">
                    上传头像
                </h4>
            </div>
            <div class="modal-body">
                <form id="sc" action="upload.php" method="post" enctype="multipart/form-data" target="shangchuan">
    
    <input type="hidden" name="tp" value="" id="tp" />
    
    <div id="yl" class="kk">
        <input type="file" name="file" id="file" onchange="document.getElementById(&#39;sc&#39;).submit()" />
    </div>
    
    
    
</form>

<iframe style="display:none" name="shangchuan" id="shangchuan">
</iframe>

            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">关闭
                </button>
                <!--<button type="button" class="btn btn-primary">
                    提交更改
                </button>-->
                
            </div>
        </div><!-- /.modal-content -->
    </div><!-- /.modal -->
</div>


</body>

<script type="text/javascript">

//回调函数,调用该方法传一个文件路径,该变背景图
function showimg(url)
{
    var div = document.getElementById("yl");
    div.style.backgroundImage = "url("+url+")";
    
    document.getElementById("tp").value = url;
}

</script>

</html>

업로드 처리 페이지:

<?php

if($_FILES["file"]["error"])
{
    echo $_FILES["file"]["error"];
}
else
{
    if(($_FILES["file"]["type"]=="image/jpeg" || $_FILES["file"]["type"]=="image/png")&& $_FILES["file"]["size"]<1024000000)
    {
        $fname = "./img/".date("YmdHis").$_FILES["file"]["name"];    
        
        $filename = iconv("UTF-8","gb2312",$fname);
        
        if(file_exists($filename))
        {
            echo "<script>alert(&#39;该文件已存在!&#39;);</script>";
        }
        else
        {
            move_uploaded_file($_FILES["file"]["tmp_name"],$filename);
            
            unlink($_POST["tp"]);
            
            echo "<script>parent.showimg(&#39;{$fname}&#39;);</script>";
        }
        
    }
}

원리:

양식 양식의 enctype="multipart/form-data" 속성을 통해 임시로 파일을 wamp 폴더의 tmp에 넣습니다. 디렉터리에 저장한 다음 백그라운드 PHP 프로그램을 통해 시스템에 파일을 저장합니다.

위 내용은 PHP에서 아바타 업로드 미리보기 기능 구현 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.