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;
using CY.Infrastructure.Common;
namespace CY.WebForm
{
///
/// OnlineAdviserLOGO 的摘要说明
///
public class OnlineAdviserLOGO : IHttpHandler, IReadOnlySessionState, IRequiresSessionState
{
#region 定义目录和初始
///
/// 临时目录
///
static string temppath = "/images/Upload/" + DateTime.Now.ToString("yyyyMMdd") + "/temp/";
///
/// 保存文件目录
///
static string path = "/images/Upload/" + DateTime.Now.ToString("yyyyMMdd") + "/";
///
/// 当前登陆人
///
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 修改部分
///
/// 处理程序
///
/// 区分参数
/// 文件地址
private void DealAjax(string AjaxSign, string path)
{
if (AjaxSign.IndexOf("OnlineAdviser") >= 0)
{
EC_OnlineAdviserBLL bll_EC_OnlineAdviserBLL = new EC_OnlineAdviserBLL();
//path存储到用户头像字段
EC_OnlineAdviser m_EC_OnlineAdviser = bll_EC_OnlineAdviserBLL.GetModelByKeyid(AjaxSign.Replace("OnlineAdviser", "").ToInt32());
if (m_EC_OnlineAdviser != null && !string.IsNullOrEmpty(path))
{
m_EC_OnlineAdviser.LOGO = path; //LOGO[Type=string] - 头像
bll_EC_OnlineAdviserBLL.UpdateModel(m_EC_OnlineAdviser);
}
}
}
#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 = "";
}
else
{
result = "";
}
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
}
}