username@email.com
2025-01-17 db32c8221ae179f6b20cc62467200c0681d10f61
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using CY.Infrastructure;
using CY.BLL;
using CY.Model;
using System.Web.SessionState;
 
namespace CY.WebForm
{
    /// <summary>
    /// Ajax 的摘要说明
    /// </summary>
    public class Ajax : IHttpHandler, IReadOnlySessionState, IRequiresSessionState
    {
        #region 定义目录和初始
 
        /// <summary>
        /// 临时目录
        /// </summary>
        static string temppath = "/images/Upload/" + DateTime.Now.ToString("yyyyMMdd") + "/temp/";
        /// <summary>
        /// 保存文件目录
        /// </summary>
        static string path = "/images/Upload/" + DateTime.Now.ToString("yyyyMMdd") + "/";
        /// <summary>
        /// 当前登陆人
        /// </summary>
        EC_MemberBasic m_EC_MemberBasic = new EC_MemberBasic();
 
        public void ProcessRequest(HttpContext context)
        {
            m_EC_MemberBasic = context.Session["nowMemberLogin"] as EC_MemberBasic;
 
            //区分参数
            string AjaxSign = context.Request.QueryString["input"];
            //返回上次后的地址
            string overpath = "";
            //上传
            string result = fajaxUpLoad(context, out overpath);
 
            DealAjax(AjaxSign, overpath);
            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.Write(result);
            HttpContext.Current.Response.End();
        }
 
        #endregion
 
        #region 修改部分
 
        /// <summary>
        /// 处理程序
        /// </summary>
        /// <param name="AjaxSign">区分参数</param>
        /// <param name="path">文件地址</param>
        private void DealAjax(string AjaxSign, string path)
        {
            if (AjaxSign == "member_logo")
            {
                OA_StaffResumeBLL bll_OA_StaffResumeBLL = new OA_StaffResumeBLL();
                
                //path存储到用户头像字段
                Model.OA_StaffResume m_OA_StaffResume = bll_OA_StaffResumeBLL.GetModelByMemberid(m_EC_MemberBasic.MemberId);
                if (m_OA_StaffResume != null && !string.IsNullOrEmpty(path))
                {
                    m_OA_StaffResume.R_G_Avatar = path;        //MP_Avatar[Type=string] - 头像
                    bll_OA_StaffResumeBLL.UpdateModel(m_OA_StaffResume);
                }
            }
        }
 
        #endregion
 
        #region 处理程序
 
        private string fajaxUpLoad(HttpContext context, out string overpath)
        {
            overpath = "";
            if (!string.IsNullOrEmpty(context.Request["Filename"]) && !string.IsNullOrEmpty(context.Request["Upload"]))
            {
                CY.WebForm.cs.UploadCS.UpFileResult _UpFileResult0 = CY.WebForm.cs.UploadCS.Upload("", temppath, "");
                //string filepath = CY.WebForm.cs.UploadCS.GetRootUrl(_UpFileResult0.returnfilename.Count > 0 ? _UpFileResult0.returnfilename[0].ToString() : "");
                string filepath = (_UpFileResult0.returnfilename.Count > 0 ? _UpFileResult0.returnfilename[0].ToString() : "");
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.Write(filepath);
                HttpContext.Current.Response.End();
            }
            if (!string.IsNullOrEmpty(context.Request["avatar1"]) && !string.IsNullOrEmpty(context.Request["avatar2"]) && !string.IsNullOrEmpty(context.Request["avatar3"]))
            {
                string result = string.Empty;
 
                //if (!(SaveAvatar("avatar1", uid) && SaveAvatar("avatar2", uid) && SaveAvatar("avatar3", uid)))
                if (!SaveAvatar("avatar1", path, out overpath))
                {//失败
                    result = "<?xml version=\"1.0\" ?><root><face success=\"0\"/></root>";
                }
                else
                {
                    result = "<?xml version=\"1.0\" ?><root><face success=\"1\"/></root>";
                }
                return result;
            }
            return null;
        }
 
        private byte[] FlashDataDecode(string s)
        {
            byte[] r = new byte[s.Length / 2];
            int l = s.Length;
            for (int i = 0; i < l; i = i + 2)
            {
                int k1 = ((int)s[i]) - 48;
                k1 -= k1 > 9 ? 7 : 0;
                int k2 = ((int)s[i + 1]) - 48;
                k2 -= k2 > 9 ? 7 : 0;
                r[i / 2] = (byte)(k1 << 4 | k2);
            }
            return r;
        }
 
        private bool SaveAvatar(string avatar, string path, out string overpath)
        {
            overpath = "";
            byte[] b = FlashDataDecode(HttpContext.Current.Request[avatar]);
            if (b.Length == 0)
                return false;
            string size = "";
            if (avatar == "avatar1")
                size = "large";
            else if (avatar == "avatar2")
                size = "medium";
            else
                size = "small";
 
            string filename = DateTime.Now.ToString("yyyyMMddHHmmssffff") + MathRandom.RandomNumber(4).ToString() + "_{0}." + "jpg";
            filename = string.Format(filename, size);
            string AllFolderPath = CY.WebForm.cs.UploadCS.GetMapPath(path);
            if (!Directory.Exists(AllFolderPath))
                Directory.CreateDirectory(AllFolderPath);
            FileStream fs = new FileStream(AllFolderPath + filename, FileMode.Create);
            fs.Write(b, 0, b.Length);
            fs.Close();
            overpath = path + filename;
            return true;
        }
 
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
 
        #endregion
    }
}