搜索

首页  >  问答  >  正文

javascript - 替换用户头像

有这么一个需求,要求用户可以更换显示的头像。我的想法是这样的:用户先上传头像图片,替换服务器上的头像图片,然后刷新就是显示更新后的图片了。
问题是,JS怎么实现上传图片到服务器上,结合php或者Nodejs

ringa_leeringa_lee2741 天前677

全部回复(3)我来回复

  • 为情所困

    为情所困2017-05-16 13:05:32

    写个上传文件的的表单即可

    <form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file" id="file" />
    <input type="submit" name="submit" value="Submit" />
    </form>

    再写个处理文件的php

    <?php
    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/pjpeg"))
    && ($_FILES["file"]["size"] < 20000))
      {
      if ($_FILES["file"]["error"] > 0)
        {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
        }
      else
        {
        echo "Upload: " . $_FILES["file"]["name"] . "<br />";
        echo "Type: " . $_FILES["file"]["type"] . "<br />";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
    
        if (file_exists("upload/" . $_FILES["file"]["name"]))
          {
          echo $_FILES["file"]["name"] . " already exists. ";
          }
        else
          {
          move_uploaded_file($_FILES["file"]["tmp_name"],
          "upload/" . $_FILES["file"]["name"]);
          echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
          }
        }
      }
    else
      {
      echo "Invalid file";
      }
    ?>

    回复
    0
  • 仅有的幸福

    仅有的幸福2017-05-16 13:05:32

    http://www.jq22.com/jquery-in...参考着插件
    转成base64编码,将编码串ajax到后端保存本地。上传之前最好等比例压缩再上传。
    难点应该是上传按钮<input type="file" name="file" id="file" />的美化上。

    回复
    0
  • 大家讲道理

    大家讲道理2017-05-16 13:05:32

    ajaxupload

    看看这个插件
    后端正常处理就行 图片保存成功之后 返回图片地址 然后 把页面里的图片地址替换掉

    <html>  
        <head>  
            <title>ajaxupload上传</title>  
            <meta charset="utf-8"/>  
            <style type="text/css">  
                .pMain{  
                    position:absolute;  
                    width:140px;  
                    height:100px;  
                    padding-left:60px;  
                    padding-top:40px;  
                }  
                #upload{  
                    width:150px;  
                    height:30px;  
                }  
                .content{  
                    width:300px;  
                    height:200px;  
                }  
            </style>  
            <script type="text/javascript" src="./jquery.1.8.js"></script>  
            <script type="text/javascript" src="./ajaxupload.js"></script>  
        </head>  
        <body>  
            <p><img id='face' src='pic.jpg'></p>
            <p class="pMain">  
                <button id="upload">文件上传</button>  
                <p class="content"></p>  
            </p>  
        </body>  
        <script type="text/javascript">  
            /*  
                    ajaxupload上传  
                */  
               $(document).ready(function(){  
                    var button = $('#upload'), interval;  
                    var fileType = "all",fileNum = "one";   
                    new AjaxUpload(button,{  
                        action: './upload.php',  
                        name: 'userfile',  
                        onSubmit : function(file, ext){  
                            if(fileType == "pic")  
                            {  
                                if (ext && /^(jpg|png|jpeg|gif)$/.test(ext)){  
                                    this.setData({  
                                        'info': '文件类型为图片'  
                                    });  
                                } else {  
                                    $('<li></li>').appendTo('.files').text('非图片类型文件,请重传');  
                                    return false;                 
                                }  
                            }  
                            button.text('文件上传中');  
                            if(fileNum == 'one')  
                                this.disable();  
                            interval = window.setInterval(function(){  
                                var text = button.text();  
                                if (text.length < 14){  
                                    button.text(text + '.');                      
                                } else {  
                                    button.text('文件上传中');               
                                }  
                            }, 200);  
                        },  
                        onComplete: function(file, response){//上传成功的函数;response代表服务器返回的数据  
                                //清楚按钮的状态  
                                button.text('文件上传');  
                                window.clearInterval(interval);  
                                this.enable();  
                                //修改下方p的显示文字  
                            if('success'==response.status){  
                                $('#face').attr('src',response.path);//修改头像路径
                                $(".content").text("上传成功");  
                            }else{  
                                $(".content").text("上传失败");  
                            }  
                        }  
                        });  
                });  
        </script>  
    </html>  
    

    改了下链接里的代码

    回复
    0
  • 取消回复