You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
6.3 KiB
140 lines
6.3 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using System.Web.Services;
|
|
using System.IO;
|
|
using OT.Web.Ap_Code;
|
|
using System.Data;
|
|
|
|
namespace OT.Web
|
|
{
|
|
/// <summary>
|
|
/// 文件上傳後臺處理
|
|
/// </summary>
|
|
[WebService(Namespace = "http://tempuri.org/")]
|
|
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
|
|
public class UploadHandler : IHttpHandler
|
|
{
|
|
public void ProcessRequest(HttpContext context)
|
|
{
|
|
context.Response.ContentType = "text/plain";
|
|
context.Response.Charset = "utf-8";
|
|
try
|
|
{
|
|
string guid = context.Request.QueryString["guid"];
|
|
string folder = context.Request["folder"];
|
|
string FileGuid = context.Request["FileGuid"];
|
|
if (string.IsNullOrEmpty(FileGuid))
|
|
{
|
|
FileGuid = Guid.NewGuid().ToString();
|
|
}
|
|
string SetCloseImgTypeCode = context.Request["SetCloseImgTypeCode"];
|
|
string CloseImgTypeCode = context.Request["CloseImgTypeCode"];
|
|
if (SetCloseImgTypeCode == CloseImgTypeCode)
|
|
{
|
|
int intSetImgCount = BasePage.gintUploadCloseImgCount;
|
|
|
|
DataSet dsFiles = new OT.BLL.CommonClass().GetFileListBySourceRelationID(FileGuid);
|
|
if (dsFiles != null && dsFiles.Tables.Count > 0 && dsFiles.Tables[0].Rows.Count >= intSetImgCount)
|
|
{
|
|
//超過上傳張數,則返回不上傳
|
|
return;
|
|
}
|
|
}
|
|
|
|
//LogTextHelper.Info(folder);
|
|
HttpPostedFile file = context.Request.Files["Filedata"];
|
|
if (file != null)
|
|
{
|
|
string oldFileName = file.FileName; //原文件名
|
|
int size = file.ContentLength; //附件大小
|
|
|
|
string strTargetRelationID = "";
|
|
string newFileName = GetNewFileName(oldFileName, out strTargetRelationID); //生成新文件名(GUID)
|
|
#region 上傳到遠程伺服器
|
|
//FileServerManage fsw = new FileServerManage();
|
|
//string uploadFilePath = "/" + newFileName;
|
|
//if (!string.IsNullOrEmpty(folder))
|
|
//{
|
|
// uploadFilePath = string.Format("/{0}/{1}", folder, newFileName);
|
|
//}
|
|
//bool uploaded = fsw.UploadFile(file.InputStream, "/" + folder + "/" + newFileName);
|
|
#endregion
|
|
#region 本地伺服器上傳
|
|
//AppConfig config = new AppConfig();
|
|
string uploadPath = folder;//config.AppConfigGet("uploadFiles");
|
|
if (string.IsNullOrEmpty(uploadPath))
|
|
{
|
|
uploadPath = "uploadFiles";
|
|
}
|
|
uploadPath = Path.Combine(HttpContext.Current.Server.MapPath("/"), uploadPath);
|
|
uploadPath = Path.Combine(uploadPath, DateTime.Now.ToString("yyyy/MM/dd"));
|
|
if (!Directory.Exists(uploadPath))
|
|
{
|
|
Directory.CreateDirectory(uploadPath);
|
|
}
|
|
string newFilePath = Path.Combine(uploadPath, newFileName);
|
|
|
|
//LogTextHelper.Info(newFilePath);
|
|
|
|
file.SaveAs(newFilePath);
|
|
bool uploaded = File.Exists(newFilePath);
|
|
#endregion
|
|
if (uploaded)
|
|
{
|
|
#region 文件保存成功后,写入附件的数据库记录
|
|
|
|
OT.BLL.OTB_SYS_Attachments o_SYS_Attachments_BLL = new OT.BLL.OTB_SYS_Attachments();
|
|
OT.Model.OTB_SYS_Attachments o_SYS_Attachments_Model = new OT.Model.OTB_SYS_Attachments();
|
|
|
|
o_SYS_Attachments_Model.TargetRelationID = strTargetRelationID;
|
|
o_SYS_Attachments_Model.SourceRelationID = FileGuid;
|
|
o_SYS_Attachments_Model.FileName = oldFileName;
|
|
o_SYS_Attachments_Model.FilePath = "~/" + folder + "/" + DateTime.Now.ToString("yyyy/MM/dd") + "/" + newFileName;
|
|
o_SYS_Attachments_Model.SubFileName = System.IO.Path.GetExtension(newFilePath).ToLower();
|
|
o_SYS_Attachments_Model.FileSize = size;
|
|
o_SYS_Attachments_Model.FileType = CloseImgTypeCode; //類別
|
|
o_SYS_Attachments_Model.Memo = CloseImgTypeCode != SetCloseImgTypeCode ? "" : file.FileName.Replace(o_SYS_Attachments_Model.SubFileName, ""); //備註
|
|
o_SYS_Attachments_Model.IsProtected = "N"; //同意對內授權
|
|
o_SYS_Attachments_Model.IsPublic = "N"; //同意對外授權
|
|
o_SYS_Attachments_BLL.Add(o_SYS_Attachments_Model);
|
|
#endregion
|
|
}
|
|
context.Response.Write(FileGuid);
|
|
}
|
|
else
|
|
{
|
|
//LogTextHelper.Error("上傳文件失败");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
//LogTextHelper.Error("上傳文件失败", ex);
|
|
throw;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 获取新的名称 比如:aa.jpg转化为aa(20090504).jpg
|
|
/// </summary>
|
|
/// <param name="fileName">文件名称[aa.jpg]</param>
|
|
/// <returns>新的文件名称</returns>
|
|
public static string GetNewFileName(string fileName, out string strTargetRelationID)
|
|
{
|
|
strTargetRelationID = Guid.NewGuid().ToString();
|
|
if (string.IsNullOrEmpty(fileName))
|
|
return string.Empty;
|
|
//文件后缀名
|
|
string extenstion = fileName.Substring(fileName.LastIndexOf(".") + 1);
|
|
string newFileName = strTargetRelationID.Replace("-", "") + "." + extenstion;
|
|
return newFileName;
|
|
}
|
|
public bool IsReusable
|
|
{
|
|
get
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|