搜尋

首頁  >  問答  >  主體

javascript - 替換使用者頭像

有這麼一個需求,要求使用者可以更換顯示的頭像。我的想法是這樣的:使用者先上傳頭像圖片,替換伺服器上的頭像圖片,然後刷新就是顯示更新後的圖片了。
問題是,JS怎麼實作上傳圖片到伺服器上,結合php或Nodejs

ringa_leeringa_lee2830 天前731

全部回覆(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到後端保存本地。上傳前最好等比例壓縮再上傳。
    困難應該是上傳按鈕的美化上。

    回覆
    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
  • 取消回覆