富頭像上傳編輯器----很好用的上傳照片和拍照功能


富頭像編輯器是一個很好的頭像圖片上傳控件,能夠對圖片進行簡單的處理,例如:剪切、調節亮度等功能;富頭像編輯器擁有很的參數配置,可根據自己的需要配置控件的功能;該控件要求瀏覽器需安裝Flash Player后才能使用;下面是我做的一個小的Demo以說明富頭像編輯器的使用方法。

1.前台頁面

  需引用js文件和初始化富頭像編輯器,腳本代碼如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Simple demo</title>
    <script src="~/Scripts/jquery-1.8.2.min.js"></script>
    <script type="text/javascript" src="/swfobject/swfobject.js"></script>
    <script type="text/javascript" src="/swfobject/fullAvatarEditor.js"></script>
</head>
<body>
    <div style="width: 800px; margin: 0 auto;">
        <h1 style="text-align: center">富頭像上傳編輯器演示</h1>
        <div>
            <p id="swfContainer">
                本組件需要安裝Flash Player后才可使用,請從
                    <a href="http://www.adobe.com/go/getflashplayer">這里</a>
                下載安裝。
            </p>
        </div>
        @* <button type="button" id="upload">自定義上傳按鈕</button>*@
    </div>
    <script type="text/javascript">
        //控件參數參考:http://www.fullavatareditor.com/api.html#usage
        swfobject.addDomLoadEvent(function () {
            var swf = new fullAvatarEditor("swfContainer", {
                id: 'swf',
                upload_url: '/Home/UploadAction',
                //  src_url: "/samplePictures/Default.jpg",//默認加載的原圖片的url
                src_upload: 2,//默認為0;是否上傳原圖片的選項,有以下值:0:不上傳;1:上傳;2 :顯示復選框由用戶選擇
                isShowUploadResultIcon: false,//在上傳完成時(無論成功和失敗),是否顯示表示上傳結果的圖標
                src_size: "2MB",//選擇的本地圖片文件所允許的最大值,必須帶單位,如888Byte,88KB,8MB
                src_size_over_limit: "文件大小超出2MB,請重新選擇圖片。",//當選擇的原圖片文件的大小超出指定最大值時的提示文本。可使用占位符{0}表示選擇的原圖片文件的大小。
                src_box_width: "300",//原圖編輯框的寬度
                src_box_height: "300",//原圖編輯框的高度
                tab_visible: false,//是否顯示選項卡*

                browse_box_width: "300",//圖片選擇框的寬度
                browse_box_height: "300",//圖片選擇框的高度

                avatar_sizes: "200*200",//100*100|50*50|32*32,表示一組或多組頭像的尺寸。其間用"|"號分隔。
            }, function (msg) {
                switch (msg.code) {
                    // case 1: alert("頁面成功加載了組件!"); break;
                    // case 2: alert("已成功加載默認指定的圖片到編輯面板。"); break;
                    case 3:
                        if (msg.type == 0) {
                            alert("攝像頭已准備就緒且用戶已允許使用。");
                        }
                        else if (msg.type == 1) {
                            alert("攝像頭已准備就緒但用戶未允許使用!");
                        }
                        else {
                            alert("攝像頭被占用!");
                        }
                        break;
                    case 5:
                        if (msg.type == 0) {
                            if (msg.content.sourceUrl) {
                                alert("原圖片已成功保存至服務器,url為:\n" + msg.content.sourceUrl);
                            }
                            alert("頭像已成功保存至服務器,url為:\n" + msg.content.avatarUrls.join("\n"));
                        }
                        break;
                }
            }
            );
            document.getElementById("upload").onclick = function () {
                swf.call("upload");
            };
        });
    </script>
</body>
</html>

 

2.后台代碼

   后台是對提交過來的文件進行保存處理並返回相應的結果,代碼如下:

 public ActionResult UploadAction()
        {
            Result result = new Result();
            result.avatarUrls = new ArrayList();
            result.success = false;
            result.msg = "Failure!";
            //取服務器時間+8位隨機碼作為部分文件名,確保文件名無重復。
            string fileName = DateTime.Now.ToString("yyyyMMddhhmmssff") + HelpClass.CreateRandomCode(8);

            //定義一個變量用以儲存當前頭像的序號
            int avatarNumber = 1;
            //遍歷所有文件域
            foreach (string fieldName in Request.Files.AllKeys)
            {
                HttpPostedFileBase file = Request.Files[fieldName];
                //原始圖片(file 域的名稱:__source,如果客戶端定義可以上傳的話,可在此處理)。
                if (fieldName == "__source")
                {
                    result.sourceUrl = string.Format("/upload/csharp_source_{0}.jpg", fileName);
                    file.SaveAs(Server.MapPath(result.sourceUrl));
                }
                //頭像圖片(file 域的名稱:__avatar1,2,3...)。
                else
                {
                    string virtualPath = string.Format("/upload/csharp_avatar{0}_{1}.jpg", avatarNumber, fileName);
                    result.avatarUrls.Add(virtualPath);
                    file.SaveAs(Server.MapPath(virtualPath));
                    avatarNumber++;
                }
            }
            result.success = true;
            result.msg = "Success!";
            //返回圖片的保存結果(返回內容為json字符串,可自行構造,該處使用Newtonsoft.Json構造)
            //  Response.Write(JsonConvert.SerializeObject(result));
            return Json(result);
        }


接收參數的一個類:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;

namespace MvcApplication1.Models
{
public class Result
{
/// <summary>
/// 表示圖片是否已上傳成功。
/// </summary>
public bool success;
/// <summary>
/// 自定義的附加消息。
/// </summary>
public string msg;
/// <summary>
/// 表示原始圖片的保存地址。
/// </summary>
public string sourceUrl;
/// <summary>
/// 表示所有頭像圖片的保存地址,該變量為一個數組。
/// </summary>
public ArrayList avatarUrls;
}

public class HelpClass
{
/// <summary>
/// 生成指定長度的隨機碼。
/// </summary>
public static string CreateRandomCode(int length)
{
string[] codes = new string[36] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
StringBuilder randomCode = new StringBuilder();
Random rand = new Random();
for (int i = 0; i < length; i++)
{
randomCode.Append(codes[rand.Next(codes.Length)]);
}
return randomCode.ToString();
}
}
}

 

 

 

3.下面是運行后的效果圖

age


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM