Ajax+PHP异步上传头像案例

逃离我推掉我的手 2022-05-30 08:14 245阅读 0赞

效果截图:

20180308115351997

上传页面

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. </head>
  6. <body>
  7. 头像:<img id="avatar" src="" height="35" width="35" alt=""><br />
  8. 选择文件:<input type="file" id="file1" /><br />
  9. <input type="button" id="upload" value="上传" /> <span id="result"></span>
  10. <img src="5fd411e985d2c939b90e2dfb.gif" height="100" width="100" style="display:none" id="imgWait" />
  11. <script src="jquery-1.11.2.min.js"></script>
  12. <script>
  13. $(function () {
  14. $("#upload").click(function () {
  15. $("#imgWait").show();
  16. var formData = new FormData();
  17. formData.append("myfile", document.getElementById("file1").files[0]);
  18. $.ajax({
  19. url: "upload.php",
  20. type: "POST",
  21. dataType: 'json',
  22. data: formData,
  23. /**
  24. *必须false才会自动加上正确的Content-Type,否则会执行error步骤
  25. */
  26. contentType: false,
  27. /**
  28. * 必须false才会避开jQuery对 formdata 的默认处理,否则会报Uncaught TypeError: Illegal invocation
  29. * XMLHttpRequest会对 formdata 进行正确的处理
  30. */
  31. processData: false,
  32. success: function (data) {
  33. if(data.code == 200){
  34. $('#avatar').attr('src',data.datas.filename);
  35. }
  36. $('#result').html(data.msg);
  37. $("#imgWait").hide();
  38. setTimeout(function(){
  39. $('#result').html('');
  40. }, 1200);
  41. },
  42. error: function () {
  43. alert("上传失败!");
  44. $("#imgWait").hide();
  45. }
  46. });
  47. });
  48. });
  49. </script>
  50. </body>
  51. </html>

后台代码:

  1. <?php
  2. $tmp_name = $_FILES['myfile']['tmp_name'];
  3. $current_time = date("Y-m-d H-i-s");
  4. if(is_uploaded_file($tmp_name)){
  5. $filename = './'.$current_time.'.jpg';
  6. $return = move_uploaded_file($tmp_name,$filename);
  7. $return ? output('200','上传成功!',['filename' => $filename]) : output('400','上传失败!');
  8. }else{
  9. output('555','非法文件!');
  10. }
  11. function output($code,$msg,$datas = array()){
  12. $outputData = array(
  13. 'code' => $code,
  14. 'msg' => $msg,
  15. 'datas' => $datas
  16. );
  17. exit(json_encode($outputData));
  18. }

发表评论

表情:
评论列表 (有 0 条评论,245人围观)

还没有评论,来说两句吧...

相关阅读

    相关 vue裁剪并头像

    之前,在用vue写一个上传头像的模块,里面需要对头像进行拖动裁剪设置,可是后台却跟我说他只要类似于input上传图片的内容。前端是没有办法操作本地图片的,一般也只能是传图片+裁