Basf_FCL/FCL/FineUIPro.Web/AttachFile/webuploader2.aspx.cs

355 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
namespace FineUIPro.Web.AttachFile
{
public partial class webuploader2 : PageBase
{
private static readonly string sessionName = "AttachFile.webuploader";
protected string ParamStr;
public string ToKeyId
{
get
{
return (string)ViewState["ToKeyId"];
}
set
{
ViewState["ToKeyId"] = value;
}
}
public string AttachPath
{
get
{
return (string)ViewState["AttachPath"];
}
set
{
ViewState["AttachPath"] = value;
}
}
public string MenuId
{
get
{
return (string)ViewState["MenuId"];
}
set
{
ViewState["MenuId"] = value;
}
}
public string AType
{
get
{
return (string)ViewState["AType"];
}
set
{
ViewState["AType"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// 删除选中行
btnDelete.OnClientClick = Grid1.GetNoSelectionAlertReference("请至少选择一项!");
btnDelete.ConfirmText = String.Format("你确定要删除选中的&nbsp;<b><script>{0}</script></b>&nbsp;个文件吗?", Grid1.GetSelectedCountReference());
Session[sessionName] = null;
ToKeyId = Request.QueryString["toKeyId"];
if (!string.IsNullOrEmpty(Request.QueryString["strParam"]))
{
this.ToKeyId = this.ToKeyId + "#" + Request.QueryString["strParam"];
}
AttachPath = Request.QueryString["path"];
ParamStr = sessionName + "|" + AttachPath;
MenuId = Request.QueryString["menuId"];
try
{
AType = Request.QueryString["type"];
if (!string.IsNullOrEmpty(AType))
{
if (AType == "view")
{
this.Toolbar1.Hidden = true;
this.Grid1.Columns[4].Hidden = true;
}
}
}
catch {
}
BindGrid();
}
else
{
if (GetRequestEventArgument() == "RebindGrid")
{
BindGrid();
}
}
}
#region BindGrid
private void BindGrid()
{
Grid1.DataSource = GetSourceData();
Grid1.DataBind();
}
#endregion
#region Events
protected void btnDelete_Click(object sender, EventArgs e)
{
foreach (string rowId in Grid1.SelectedRowIDArray)
{
DeleteRow(rowId);
}
BindGrid();
}
protected void Grid1_RowCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
DeleteRow(e.RowID);
BindGrid();
}
if (e.CommandName == "Attach")
{
JArray source = GetSourceData();
for (int i = 0, count = source.Count; i < count; i++)
{
JObject item = source[i] as JObject;
if (item.Value<string>("id") == e.RowID)
{
try
{
string savedName = item.Value<string>("savedName");
string url = BLL.Funs.RootPath + AttachPath + "\\" + savedName;
FileInfo info = new FileInfo(url);
if (!info.Exists || string.IsNullOrEmpty(savedName))
{
url = BLL.Funs.RootPath + "Images//Null.jpg";
info = new FileInfo(url);
}
string fileName = Path.GetFileName(url);
long fileSize = info.Length;
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ContentType = "application/x-zip-compressed";
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
System.Web.HttpContext.Current.Response.AddHeader("Content-Length", fileSize.ToString());
System.Web.HttpContext.Current.Response.TransmitFile(url, 0, fileSize);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.Close();
}
catch (Exception)
{
}
}
}
}
}
#endregion
#region GetSourceData
private JArray GetSourceData()
{
if (Session[sessionName] == null)
{
var sour = from x in BLL.Funs.DB.AttachFile where x.ToKeyId == ToKeyId select x;
if (sour.Count() > 0)
{
Session[sessionName] = JArray.Parse(sour.First().AttachSource);
}
else
{
Session[sessionName] = new JArray();
}
}
return (JArray)Session[sessionName];
}
private void DeleteRow(string rowId)
{
JArray source = GetSourceData();
for (int i = 0, count = source.Count; i < count; i++)
{
JObject item = source[i] as JObject;
if (item.Value<string>("id") == rowId)
{
try
{
string savedName = item.Value<string>("savedName");
System.IO.File.Delete(Server.MapPath("~/" + AttachPath + "\\" + savedName));
}
catch (Exception)
{
// 尝试删除物理文件失败,不做处理
}
source.RemoveAt(i);
break;
}
}
Session[sessionName] = source;
}
#endregion
/// <summary>
/// 保存按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
Model.FCLDB db = Funs.DB;
JArray source = GetSourceData();
string attachUrl = string.Empty;
for (int i = 0, count = source.Count; i < count; i++)
{
JObject item = source[i] as JObject;
if (item.Value<string>("savedName").Contains("&") || item.Value<string>("savedName").Contains(">")
|| item.Value<string>("savedName").Contains("<") || item.Value<string>("savedName").Contains("%")
|| item.Value<string>("savedName").Contains("?")
|| item.Value<string>("savedName").Contains(":") || item.Value<string>("savedName").Contains("/"))
{
Alert.ShowInParent("文件名不能包含 &><%?:/ 等字符");
return;
}
}
for (int i = 0, count = source.Count; i < count; i++)
{
JObject item = source[i] as JObject;
attachUrl += AttachPath + "\\" + item.Value<string>("savedName") + ",";
}
if (!string.IsNullOrEmpty(attachUrl))
{
attachUrl = attachUrl.Replace('/', '\\');
attachUrl = attachUrl.Substring(0, attachUrl.LastIndexOf(","));
}
var sour = from x in db.AttachFile where x.ToKeyId == ToKeyId select x;
//合同管理附件名重复提醒
if (MenuId == BLL.Const.SESRelatedDateMenuId)
{
string newName = attachUrl.Substring(attachUrl.LastIndexOf("\\"));
string n = newName.Substring(newName.IndexOf("_") + 1);
foreach (var item in sour)
{
if (item.AttachUrl.Contains(n))
{
Alert.ShowInTop(n + "已存在!", MessageBoxIcon.Warning);
return;
}
}
string fc_id = Request.QueryString["fcid"];
string fileTypeId = Request.QueryString["fileTypeId"];
var conLists = from x in Funs.DB.FC_ContractManagement where x.FC_ID.ToString() == fc_id && x.FileTypeId == fileTypeId select x;
foreach (var item in conLists)
{
if (item.AttachUrl.Contains(n))
{
Alert.ShowInTop(n + "已存在!", MessageBoxIcon.Warning);
return;
}
}
}
if (sour.Count() == 0)
{
Model.AttachFile att = new Model.AttachFile();
att.AttachFileId = BLL.SQLHelper.GetNewID(typeof(Model.AttachFile));
att.ToKeyId = ToKeyId;
att.AttachSource = source.ToString();
att.AttachUrl = attachUrl;
att.MenuId = MenuId;
db.AttachFile.InsertOnSubmit(att);
db.SubmitChanges();
}
else
{
Model.AttachFile att = db.AttachFile.FirstOrDefault(x => x.AttachFileId == sour.First().AttachFileId);
if (att != null)
{
att.ToKeyId = ToKeyId;
att.AttachSource = source.ToString();
att.AttachUrl = attachUrl;
att.MenuId = MenuId;
db.SubmitChanges();
}
}
ShowNotify("保存成功!");
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
#region
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private void GetButtonPower()
{
//var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.UserId, MenuId);
//if (buttonList.Count > 0)
//{
// if (!buttonList.Contains(BLL.Const.BtnSave))
// {
// this.btnSelectFiles.Hidden = true;
// this.btnDelete.Hidden = true;
// this.btnSave.Hidden = true;
// }
//}
}
#endregion
}
}