Basf_FCL/FCL/FineUIPro.Web/SupportDocument/Template.aspx.cs

329 lines
14 KiB
C#
Raw Normal View History

2024-12-27 23:42:33 +08:00
using BLL;
using ICSharpCode.SharpZipLib.Zip;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.SupportDocument
{
public partial class Template : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetButtonPower();//按钮权限
BindGrid();
}
}
private void BindGrid()
{
string strSql = @"SELECT t.TemplateId,
t.Template,
t.UploadBy,
t.UploadDate,
t.AttachUrl,
U.UserName AS UploadByName
FROM dbo.SupportDocument_Template AS t
LEFT JOIN Sys_User AS U ON U.UserId = t.UploadBy
WHERE 1=1 ";
List<SqlParameter> listStr = new List<SqlParameter>();
//if (tvStandardTemp.SelectedNodeID != "0" && tvStandardTemp.SelectedNodeID != null)
//{
// strSql += " AND t.TemplateTypeId = @TemplateTypeId";
// listStr.Add(new SqlParameter("@TemplateTypeId", tvStandardTemp.SelectedNodeID));
//}
strSql += " ORDER BY t.UploadDate DESC";
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
Grid1.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = table;
Grid1.DataBind();
for (int i = 0; i < Grid1.Rows.Count; i++)
{
System.Web.UI.WebControls.LinkButton lbtnUrl = ((System.Web.UI.WebControls.LinkButton)(this.Grid1.Rows[i].FindControl("lbtnUrl1")));
string url = lbtnUrl.CommandArgument.ToString();
if (!string.IsNullOrEmpty(url))
{
url = url.Replace('\\', '/');
lbtnUrl.Text = BLL.UploadAttachmentService.ShowAttachment("../", url);
}
}
}
//protected void btnSearch_Click(object sender, EventArgs e)
//{
// if (!string.IsNullOrEmpty(this.tvStandardTemp.SelectedNodeID))
// {
// BindGrid(this.tvStandardTemp.SelectedNodeID);
// }
//}
protected void btnAdd_Click(object sender, EventArgs e)
{
string id = SQLHelper.GetNewID(typeof(Model.SupportDocument_Template));
PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("../AttachFile/webuploader3.aspx?type=add&toKeyId={0}&path=FileUpload/SupportDocument/Template&menuId={1}", id, BLL.Const.TemplateMenuId)));
}
protected void btnEdit_Click(object sender, EventArgs e)
{
string rowId = Grid1.SelectedRowID;
if (!string.IsNullOrEmpty(rowId))
{
PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("../AttachFile/webuploader3.aspx?type=edit&toKeyId={0}&path=FileUpload/SupportDocument/Template&menuId={1}", rowId, BLL.Const.TemplateMenuId)));
}
else
{
Alert.ShowInTop("Please select the record to modify", MessageBoxIcon.Warning);
return;
}
//PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("StandardTemplateEdit.aspx?templateId={0}", rowId, "编辑 - ")));
}
protected void btnDelete_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length > 0)
{
foreach (int rowIndex in Grid1.SelectedRowIndexArray)
{
string rowID = Grid1.DataKeys[rowIndex][0].ToString();
var t = BLL.TemplateService.GetTemplateById(rowID);
if (t != null)
{
BLL.TemplateService.DeleteTemplateById(rowID);
}
}
BindGrid();
BLL.Sys_LogService.AddLog(this.CurrUser.UserId, "Delete Template");
ShowNotify("Deleted successfully!");
}
else
{
Alert.ShowInTop("Please select the record to Delete", MessageBoxIcon.Warning);
return;
}
}
protected void Grid1_RowDoubleClick(object sender, EventArgs e)
{
string rowId = Grid1.SelectedRowID;
if (!string.IsNullOrEmpty(rowId))
{
PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("../AttachFile/webuploader3.aspx?type=edit&toKeyId={0}&path=FileUpload/SupportDocument/Template&menuId={1}", rowId, BLL.Const.TemplateMenuId)));
}
else
{
Alert.ShowInTop("Please select the record to modify", MessageBoxIcon.Warning);
return;
}
//PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("StandardTemplateEdit.aspx?templateId={0}", rowId, "编辑 - ")));
}
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
Grid1.PageIndex = e.NewPageIndex;
BindGrid();
}
/// <summary>
/// 分页显示条数下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
BindGrid();
}
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
#region
/// <summary>
/// 菜单按钮权限
/// </summary>
private void GetButtonPower()
{
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.UserId, BLL.Const.TemplateMenuId);
if (buttonList.Count() > 0)
{
if (buttonList.Contains(BLL.Const.BtnAdd))
{
this.btnNew.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnModify))
{
this.btnEdit.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnDownload))
{
this.btnBatchDownload.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnDelete))
{
this.btnDelete.Hidden = false;
}
}
}
#endregion
protected void btnBatchDownload_Click(object sender, EventArgs e)
{
string rootPath = Server.MapPath("~/").Replace('\\', '/');
if (Grid1.SelectedRowIDArray.Count() == 0)
{
Alert.ShowInParent("Please select Download Row!");
return;
}
else
{
string[] rowList = Grid1.SelectedRowIDArray;
List<string> durl = new List<string>();
List<string> urlList = (from x in Funs.DB.SupportDocument_Template where rowList.Contains(x.TemplateId) && x.AttachUrl != null && x.AttachUrl != "" select x.AttachUrl).ToList();
string date = DateTime.Now.ToString("yyyyMMddHHmmss");
string destFile = rootPath + "FileUpload\\Temp\\Template" + date;
string zipFileName = "Template_" + date;
if (!Directory.Exists(destFile))
{
Directory.CreateDirectory(destFile);
}
foreach (string url in urlList)
{
string sourceFileName = rootPath + url.Replace('\\', '/');
string[] subUrl = sourceFileName.Split('/');
string fileName = subUrl[subUrl.Count() - 1];
string newFileName = fileName.Substring(fileName.IndexOf("~") + 1);
if (newFileName.Contains("_"))
{
if (newFileName.Substring(0, 1) == "_")
{
newFileName = newFileName.Substring(1, newFileName.Length - 1);
}
else
{
newFileName = newFileName.Replace(newFileName.Split('_')[0], "");
newFileName = newFileName.Substring(1);
}
}
string destFileName = destFile + "/" + newFileName;
if (File.Exists(sourceFileName))
{
File.Copy(sourceFileName, destFileName, true);
}
}
FileZipDownload(destFile.Replace('\\', '/'), zipFileName);
}
}
public string DownloadFileByHttpUrl(List<string> HttpUrlList)
{
if (HttpUrlList == null || HttpUrlList.Count == 0)
{
return "没有附件";
}
try
{
var random = new Random();
var zipMs = new MemoryStream();
ZipOutputStream zipStream = new ZipOutputStream(zipMs);
zipStream.SetLevel(6);//压缩率0~9
foreach (var url in HttpUrlList)
{
if (!string.IsNullOrWhiteSpace(url))
{
string rootPath = System.Configuration.ConfigurationManager.AppSettings["RootUrl"];
string surl = rootPath + url.Replace('\\', '/');
var urlStr = HttpUtility.UrlDecode(surl);
Console.WriteLine(urlStr);
string fileExt = Path.GetExtension(urlStr).ToLower();
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(urlStr);
var strName = fileNameWithoutExtension.Substring(fileNameWithoutExtension.LastIndexOf("/") + 1) + random.Next(1000, 9999) + fileExt;
zipStream.PutNextEntry(new ZipEntry(strName));
ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlStr);
request.AllowAutoRedirect = true;
WebProxy proxy = new WebProxy();
proxy.BypassProxyOnLocal = true;
proxy.UseDefaultCredentials = true;
request.Proxy = proxy;
WebResponse response = request.GetResponse();
using (Stream streams = response.GetResponseStream())
{
Byte[] buffer = new Byte[1024];
int current = 0;
while ((current = streams.Read(buffer, 0, buffer.Length)) != 0)
{
zipStream.Write(buffer, 0, current);
}
zipStream.Flush();
}
}
}
zipStream.Finish();
zipMs.Position = 0;
//下边为打包压缩
MemoryStream stream = zipMs;
byte[] srcBuf = new Byte[stream.Length];
stream.Read(srcBuf, 0, srcBuf.Length);
stream.Seek(0, SeekOrigin.Begin);
string filePath = "C:/DownLoad";//Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
string date = DateTime.Now.ToString("yyyyMMddHHmmss");
string con = "Template";
var file_name = con + "_" + date + ".zip";
using (FileStream fs = new FileStream(filePath + "\\" + file_name, FileMode.Create, FileAccess.Write))
{
fs.Write(srcBuf, 0, srcBuf.Length);
fs.Close();
return "已下载到C盘Download文件下";
}
}
catch (Exception ex)
{
return "下载失败:" + ex.ToString();
}
}
private void FileZipDownload(string destFilePath, string zipFileName)
{
string zipFilePath = destFilePath + ".zip";
System.IO.Compression.ZipFile.CreateFromDirectory(destFilePath, zipFilePath);
FileInfo info = new FileInfo(zipFilePath);
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(zipFileName + ".zip", System.Text.Encoding.UTF8));
System.Web.HttpContext.Current.Response.AddHeader("Content-Length", fileSize.ToString());
System.Web.HttpContext.Current.Response.TransmitFile(zipFilePath, 0, fileSize);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.Close();
Funs.DeleteDir(destFilePath);
File.Delete(zipFilePath);
}
}
}