>백엔드 개발 >PHP 튜토리얼 >PHP 아바타 업로드 미리보기 예시에 대한 자세한 설명

PHP 아바타 업로드 미리보기 예시에 대한 자세한 설명

墨辰丷
墨辰丷원래의
2018-05-23 11:35:502655검색

이 글은 주로 PHP에서 아바타 업로드 미리보기를 구현하는 자세한 예를 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.

사진 업로드는 다들 익숙하시겠지만, 향후 프로젝트에서는 아바타 업로드 등 페이지 새로고침 방식을 사용하여 사진을 업로드하지 못할 수도 있습니다. 업로드를 확인하면 양식을 통해 업로드되지 않습니다. 업로드를 새로 고치려면 제출을 클릭하세요. 두 개의 비동기 비새로고침 업로드 사진 + 사진 미리보기를 소개하겠습니다. 첫 번째는 이미 만들어진 uploadfy 플러그인을 통해 업로드하는 것입니다. 인터넷에는 많은 예가 있습니다.

하지만 제가 중점적으로 소개해드릴 것은 두 번째 방법인 Ajax를 통해 이미지를 업로드하는 방법입니다. uploadfy 플러그인을 사용하려면 장치가 swf 형식의 Flash를 지원해야 하기 때문에 첫 번째 방법은 대부분의 휴대폰에서 사용할 수 없습니다. 먼저 업로드 원칙에 대해 설명하겠습니다. js를 통해 파일 텍스트 필드를 제어합니다. 사진을 선택한 후 Ajax를 통해 비동기적으로 양식을 제출한 다음 사진의 위치를 ​​반환 값으로 사용하고 js를 사용하여 src를 설정합니다. img의 속성을 반환 값으로 사용합니다.

업로드 아바타 영역:

코드:

<!DOCTYPE html >
<html>
<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="external nofollow" 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) -->
<p class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <p class="modal-dialog">
    <p class="modal-content">
      <p class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
          ×
        </button>
        <h4 class="modal-title" id="myModalLabel">
          上传头像
        </h4>
      </p>
      <p 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" />
  
  <p id="yl" class="kk">
    <input type="file" name="file" id="file" onchange="document.getElementById(&#39;sc&#39;).submit()" />
  </p>  
</form>
<iframe style="display:none" name="shangchuan" id="shangchuan">
</iframe>

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


</body>

<script type="text/javascript">

//回调函数,调用该方法传一个文件路径,该变背景图
function showimg(url)
{
  var p = document.getElementById("yl");
  p.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" 속성을 통해 임시로 파일을 생성합니다. form form wamp 폴더 안의 tmp 디렉터리에 넣은 후, 백그라운드 php 프로그램을 통해 시스템에 파일을 저장합니다.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.


관련 추천:

jQuery+PHP별점 구현 방법_jquery

jQuery+PHP편집 가능한 테이블 필드 콘텐츠를 구현하고 실시간으로 저장_jquery

PHP +MySQL+ jQuery 레이어를 마음대로 드래그하고 드래그 위치를 즉시 저장합니다.

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

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