CNCEC_SUBQHSE_WUHUAN/SGGL/FineUIPro.Web/AttachFile/webuploader.aspx.cs

800 lines
31 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 BLL;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using WIA;
namespace FineUIPro.Web.AttachFile
{
public partial class webuploader : PageBase
{
private static readonly string sessionName = "AttachFile.webuploader";
protected string ParamStr;
#region
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 Type
{
get
{
return (string)ViewState["Type"];
}
set
{
ViewState["Type"] = value;
}
}
public string Source
{
get
{
return (string)ViewState["Source"];
}
set
{
ViewState["Source"] = value;
}
}
public string JointCheck
{
get
{
return (string)ViewState["JointCheck"];
}
set
{
ViewState["JointCheck"] = value;
}
}
public string editorMode
{
get
{
return (string)ViewState["editorMode"];
}
set
{
ViewState["editorMode"] = value;
}
}
#endregion
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// 删除选中行
this.btnDelete.OnClientClick = Grid1.GetNoSelectionAlertReference("请至少选择一项!");
this.btnDelete.ConfirmText = String.Format("你确定要删除选中的&nbsp;<b><script>{0}</script></b>&nbsp;个文件吗?", Grid1.GetSelectedCountReference());
Session[sessionName] = null;
this.ToKeyId = Request.QueryString["toKeyId"];
if (!string.IsNullOrEmpty(Request.QueryString["strParam"]))
{
this.ToKeyId = this.ToKeyId + "#" + Request.QueryString["strParam"];
}
this.AttachPath = Request.QueryString["path"];
this.ParamStr = sessionName + "|" + AttachPath;
this.MenuId = Request.QueryString["menuId"];
this.Type = Request.Params["type"];
JointCheck = Request.Params["JointCheck"];//是否共检页面
Source = Request.QueryString["source"];//如果等于1则是文件柜
editorMode = Request.Params["editorMode"];
if (string.IsNullOrEmpty(editorMode))
{
editorMode = "edit";
}
//Request.QueryString["type"]; ////类型0时是上传资源页面附件权限不需要判断 -1时只查看权限 -2查看集团公司
this.GetButtonPower();
this.BindGrid();
}
else
{
if (GetRequestEventArgument() == "RebindGrid")
{
this.BindGrid();
}
}
}
#endregion
#region BindGrid
/// <summary>
/// 绑定GV
/// </summary>
private void BindGrid()
{
if (Source == "1") //文件柜
{
if (!string.IsNullOrWhiteSpace(JointCheck))
{
if (JointCheck.Equals("JointCheck"))
{
Grid1.DataSource = JointData();
}
}
else
{
Grid1.DataSource = SourceData();
}
}
else
{
Grid1.DataSource = GetSourceData();
}
Grid1.DataBind();
}
#endregion
private JArray JointData()
{
if (Session[sessionName] == null && !string.IsNullOrEmpty(ToKeyId))
{
//Session[sessionName] = new JArray();
StringBuilder stxt = new StringBuilder();
var jointChecks = JointCheckDetailService.GetViewLists(ToKeyId);
var liststr = new List<string>();
if (jointChecks.Count > 0)
{
foreach (var itemjointChecks in jointChecks)
{
liststr.Add(itemjointChecks.JointCheckDetailId);
liststr.Add(itemjointChecks.JointCheckDetailId + "r");
}
}
var sourlist = AttachFileService.GetfileDetaillist(liststr, MenuId);
if (sourlist.Count > 0)
{
stxt.Append("[");
foreach (var sour in sourlist)
{
int index = sourlist.IndexOf(sour);
string str = string.Empty;
if (sour != null)
{
string url = sour.AttachUrl.Replace('\\', '/');
List<string> list = Funs.GetStrListByStr(url, ',');
if (list.Count() > 0)
{
int i = 0;
foreach (var item in list)
{
string atturl = Funs.RootPath + item.Replace(';', ' ').Trim();
if (File.Exists(atturl))
{
i += 1;
break;
}
}
if (i > 0)
{
if (sourlist.Count == 1)
{
str = sour.AttachSource.Substring(0, sour.AttachSource.Length - 1);
str = str.Substring(1);
}
else if (sourlist.Count > 1)
{
var st = sour.AttachSource.Substring(0, sour.AttachSource.Length - 1);
st = st.Substring(1);
if (sourlist.Count - 1 != index)
{
st += ",";
}
str += st;
}
}
}
stxt.Append(str);
}
}
stxt.Append("]");
Session[sessionName] = JArray.Parse(stxt.ToString());
}
}
return (JArray)Session[sessionName];
}
/// <summary>
/// 文件柜专用
/// </summary>
/// <returns></returns>
private JArray SourceData()
{
if (Session[sessionName] == null && !string.IsNullOrEmpty(ToKeyId))
{
//Session[sessionName] = new JArray();
StringBuilder stxt = new StringBuilder();
IList<Model.AttachFile> sourlist = AttachFileService.Getfilelist(ToKeyId, MenuId);
if (sourlist.Count > 0)
{
stxt.Append("[");
foreach (var sour in sourlist)
{
int index = sourlist.IndexOf(sour);
string str = string.Empty;
if (sour != null)
{
string url = sour.AttachUrl.Replace('\\', '/');
List<string> list = Funs.GetStrListByStr(url, ',');
if (list.Count() > 0)
{
int i = 0;
foreach (var item in list)
{
string atturl = Funs.RootPath + item.Replace(';', ' ').Trim();
if (File.Exists(atturl))
{
i += 1;
break;
}
}
if (i > 0)
{
if (sourlist.Count == 1)
{
str = sour.AttachSource.Substring(0, sour.AttachSource.Length - 1);
str = str.Substring(1);
}
else if (sourlist.Count > 1)
{
var st = sour.AttachSource.Substring(0, sour.AttachSource.Length - 1);
st = st.Substring(1);
if (sourlist.Count - 1 != index)
{
st += ",";
}
str += st;
}
}
}
stxt.Append(str);
}
}
stxt.Append("]");
Session[sessionName] = JArray.Parse(stxt.ToString());
}
}
return (JArray)Session[sessionName];
}
#region Events
/// <summary>
/// 删除按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnDelete_Click(object sender, EventArgs e)
{
foreach (string rowId in Grid1.SelectedRowIDArray)
{
DeleteRow(rowId);
}
BindGrid();
}
/// <summary>
/// 行事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_RowCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
DeleteRow(e.RowID);
BindGrid();
}
if (e.CommandName == "Preview")
{
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 folder = item.Value<string>("folder");
string xnUrl = AttachPath + "\\" + savedName;
if (!string.IsNullOrEmpty(folder))
{
xnUrl = folder + savedName;
}
string url = Funs.RootPath + xnUrl;
if (savedName.Contains("FileUpLoad"))
{
url = Funs.RootPath + savedName.Replace('/', '\\');
}
FileInfo info = new FileInfo(url);
if (!info.Exists || string.IsNullOrEmpty(savedName))
{
url = Funs.RootPath + "Images//Null.jpg";
info = new FileInfo(url);
}
var FiletExtension = Path.GetExtension(savedName);
bool isSupportType = AttachFileService.IsSupportFileType(FiletExtension);
if (isSupportType)
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("../AttachFile/Look.aspx?fileUrl={0}", url, "查看 -")));
}
else
{
ShowNotify("不支持预览", MessageBoxIcon.Warning);
}
//if (FiletExtension == ".docx" || FiletExtension == ".pdf")
//{
// string httpUrl = BLL.AsposeWordHelper.WordToHtml(url);
// PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("../AttachFile/Look.aspx?fileUrl={0}", httpUrl, "查看 -")));
//}
//else if (FiletExtension == ".txt")
//{
// PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("../AttachFile/Look.aspx?fileUrl={0}", url, "查看 -")));
//}
//else if (FiletExtension == ".xls")
//{
// string httpUrl = BLL.AsposeWordHelper.PriviewExcel(url);
// PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("../AttachFile/Look.aspx?fileUrl={0}", httpUrl, "查看 -")));
//}
//else
//{
// ShowNotify("不支持预览", MessageBoxIcon.Warning);
//}
}
catch (Exception)
{
}
}
}
}
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 folder = item.Value<string>("folder");
string xnUrl = AttachPath + "\\" + savedName;
if (!string.IsNullOrEmpty(folder))
{
xnUrl = folder + savedName;
}
string url = Funs.RootPath + xnUrl;
if (savedName.Contains("FileUpLoad"))
{
url = Funs.RootPath + savedName.Replace('/', '\\');
}
FileInfo info = new FileInfo(url);
if (!info.Exists || string.IsNullOrEmpty(savedName))
{
url = Funs.RootPath + "Images//Null.jpg";
info = new FileInfo(url);
}
if (Path.GetExtension(savedName) == ".mp4" || Path.GetExtension(savedName).ToLower() == ".mp4" || Path.GetExtension(savedName) == ".m4v")
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("../AttachFile/player.aspx?url={0}", xnUrl.Replace('\\', '/'), "播放 - ")));
}
else
{
if (Path.GetExtension(savedName) == ".gif" || Path.GetExtension(savedName) == ".jpg" || Path.GetExtension(savedName) == ".jpeg" || Path.GetExtension(savedName) == ".bmp" || Path.GetExtension(savedName) == ".png")
{
string httpUrl = Funs.SGGLUrl + xnUrl;
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script type='text/javascript'>window.open('" + httpUrl + "');</script>");
}
else
{
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.ContentType = "application/octet-stream";
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.End();
break;
}
}
}
catch (Exception ex)
{
}
}
}
}
}
#endregion
#region GetSourceData
/// <summary>
/// 得到Session
/// </summary>
/// <returns></returns>
private JArray GetSourceData()
{
if (Session[sessionName] == null && !string.IsNullOrEmpty(ToKeyId))
{
Session[sessionName] = new JArray();
Model.AttachFile sour = new Model.AttachFile();
if (this.MenuId == Const.ProjectPunishNoticeMenuId || this.MenuId == Const.ProjectPunishNoticeStatisticsMenuId)
{
sour = Funs.DB.AttachFile.FirstOrDefault(x => x.ToKeyId == ToKeyId && x.MenuId == this.MenuId);
}
else
{
sour = Funs.DB.AttachFile.FirstOrDefault(x => x.ToKeyId == ToKeyId);
}
if (sour != null)
{
string url = sour.AttachUrl.Replace('\\', '/');
List<string> list = Funs.GetStrListByStr(url, ',');
if (list.Count() > 0)
{
int i = 0;
foreach (var item in list)
{
string atturl = Funs.RootPath + item.Replace(';', ' ').Trim();
if (File.Exists(atturl))
{
i += 1;
break;
}
}
if (i > 0)
{
Session[sessionName] = JArray.Parse(sour.AttachSource);
}
}
}
}
return (JArray)Session[sessionName];
}
/// <summary>
///
/// </summary>
/// <param name="rowId"></param>
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");
string attachUrl = AttachPath + "\\" + savedName;
if (!string.IsNullOrEmpty(item.Value<string>("folder")))
{
attachUrl = item.Value<string>("folder") + savedName;
}
File.Delete(Server.MapPath("~/" + attachUrl));
BLL.LogService.AddSys_Log(this.CurrUser, "删除附件!", null, this.MenuId, BLL.Const.BtnDelete);
}
catch (Exception)
{
// 尝试删除物理文件失败,不做处理
}
source.RemoveAt(i);
break;
}
}
Session[sessionName] = source;
}
#endregion
#region
/// <summary>
/// 保存按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
JArray source = GetSourceData();
if (!string.IsNullOrEmpty(source.ToString()))
{
string attachUrl = string.Empty;
for (int i = 0, count = source.Count; i < count; i++)
{
JObject item = source[i] as JObject;
if (!string.IsNullOrEmpty(item.Value<string>("folder")))
{
attachUrl += item.Value<string>("folder") + item.Value<string>("savedName") + ",";
}
else
{
attachUrl += AttachPath + "/" + DateTime.Now.ToString("yyyy-MM") + "/" + item.Value<string>("savedName") + ",";
}
}
if (!string.IsNullOrEmpty(attachUrl))
{
attachUrl = attachUrl.Substring(0, attachUrl.LastIndexOf(",")).Replace('\\', '/');
}
///保存方法
this.SaveData(source.ToString(), attachUrl);
ShowNotify("保存成功!", MessageBoxIcon.Success);
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
}
#endregion
/// <summary>
/// 保存附件
/// </summary>
/// <param name="source"></param>
/// <param name="attachUrl"></param>
private void SaveData(string source, string attachUrl)
{
UploadFileService.SaveAttachUrl(source, attachUrl, MenuId, ToKeyId);
}
/// <summary>
/// 扫描文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnImageMagnify_Click(object sender, EventArgs e)
{
try
{
DeviceManager manager = new DeviceManagerClass();
Device device = null;
foreach (DeviceInfo info in manager.DeviceInfos)
{
if (info.Type != WiaDeviceType.ScannerDeviceType)
continue;
device = info.Connect();
break;
}
Item item = device.Items[1];
CommonDialogClass cdc = new WIA.CommonDialogClass();
ImageFile imageFile = null;
imageFile = cdc.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType,
WIA.WiaImageIntent.TextIntent,
WIA.WiaImageBias.MaximizeQuality,
"{00000000-0000-0000-0000-000000000000}",
true,
true,
false);
if (imageFile != null)
{
var buffer = imageFile.FileData.get_BinaryData() as byte[];
using (MemoryStream ms = new MemoryStream())
{
ms.Write(buffer, 0, buffer.Length);
string filePath = Server.MapPath("~/") + AttachPath; ///文件夹
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
string name = "\\";
var menu = BLL.SysMenuService.GetSysMenuByMenuId(this.MenuId);
if (menu != null)
{
name += menu.MenuName;
}
name += Funs.GetNewFileName() + ".jpg";
string url = filePath + name;
if (!string.IsNullOrEmpty(url))
{
using (FileStream fs = new FileStream(url, FileMode.Create, FileAccess.Write))
{
ms.WriteTo(fs);
string attachUrl = AttachPath + name;
if (!string.IsNullOrEmpty(attachUrl))
{
attachUrl = attachUrl.Replace('/', '\\');
}
string oldSrouce = string.Empty;
string FullPath = string.Empty;
Model.AttachFile att = Funs.DB.AttachFile.FirstOrDefault(x => x.ToKeyId == this.ToKeyId);
if (att != null && !string.IsNullOrEmpty(att.AttachUrl))
{
FullPath = att.AttachUrl + "," + attachUrl;
oldSrouce = att.AttachSource;
}
else
{
FullPath = attachUrl;
}
string source = BLL.UploadFileService.GetSourceByAttachUrl(attachUrl, buffer.Length, oldSrouce);
//this.SaveData(source, FullPath); ///保存方法
Session[sessionName] = JArray.Parse(source);
}
this.BindGrid();
ShowNotify("扫描完成!", MessageBoxIcon.Success);
}
}
}
}
catch
{
ShowNotify("请检查扫描仪是否连接正确!", MessageBoxIcon.Warning);
}
}
#region
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private void GetButtonPower()
{
if (this.Type == "0")
{
this.toolBar.Hidden = false;
}
else if (this.Type == "-1")
{
this.toolBar.Hidden = true;
}
else
{
if (this.CurrUser != null && this.MenuId != Const.ProjectPunishNoticeStatisticsMenuId)
{
var buttonList = CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, MenuId);
if (buttonList.Count > 0)
{
if (buttonList.Contains(Const.BtnSave) || buttonList.Contains(Const.BtnAuditing))
{
this.toolBar.Hidden = false;
}
}
}
}
}
#endregion
protected void btnPlay_Click(object sender, EventArgs e)
{
}
protected void btnOnlineEdit_OnClick(object sender, EventArgs e)
{
JArray source = GetSourceData();
for (int i = 0, count = source.Count; i < count; i++)
{
JObject item = source[i] as JObject;
if (item.Value<string>("id") == Grid1.SelectedRowID)
{
try
{
string savedName = item.Value<string>("savedName");
string folder = item.Value<string>("folder");
string xnUrl = AttachPath + "\\" + savedName;
if (!string.IsNullOrEmpty(folder))
{
xnUrl = folder + savedName;
}
string url = Funs.RootPath + xnUrl;
if (savedName.Contains("FileUpLoad"))
{
url = Funs.RootPath + savedName.Replace('/', '\\');
}
FileInfo info = new FileInfo(url);
if (!info.Exists || string.IsNullOrEmpty(savedName))
{
url = Funs.RootPath + "Images//Null.jpg";
info = new FileInfo(url);
}
var FiletExtension = Path.GetExtension(savedName);
bool isSupportType = FiletExtension.Equals(".docx");
if (isSupportType)
{
url = url.Replace(Funs.RootPath, "");
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("../AttachFile/OnlineEditing.aspx?fileUrl={0}&&editorMode={1}", url,editorMode, "编辑 -")));
}
else
{
ShowNotify("不支持在线编辑", MessageBoxIcon.Warning);
}
}
catch (Exception)
{
}
}
}
}
}
}