Пример #1
0
 public void Add(UserFileOPLog item)
 {
     UserOPFileLogQueue.Enqueue(item);
     Interlocked.Increment(ref queueLength);
     lock (SynObject)
     {
         if (queueLength > 10 && !runFlag)
         {
             ThreadPool.QueueUserWorkItem(new WaitCallback(NewThreadFunc));
         }
     }
 }
Пример #2
0
        /// <summary> 添加文件日志
        /// </summary>
        /// <param name="item"></param>
        /// <param name="currAccDbName"></param>
        /// <returns></returns>
        public static bool Add(UserFileOPLog item, string currAccDbName)
        {
            Dictionary <string, string> DicParam = new Dictionary <string, string>();

            DicParam.Add("ClientUserID", item.userOP.UserID);
            DicParam.Add("OPName", item.userOP.OPName);
            DicParam.Add("LogID", System.Guid.NewGuid().ToString());
            DicParam.Add("FileName", item.FileName.Replace('\'', '"'));
            DicParam.Add("FilePath", item.FilePath.Replace('\'', '"'));
            DicParam.Add("sTimeTicks", item.sTimeTicks.ToString());
            DicParam.Add("eTimeTicks", item.eTimeTicks.ToString());
            DicParam.Add("exeResult", item.exeResult ? "1" : "0");
            return(DBHelper.Submit_AddLog("添加文件日志", currAccDbName, "tl_ClientUserFile", "", "", DicParam));
        }
Пример #3
0
        private void NewThreadFunc(object state)
        {
            runFlag = true;
            UserFileOPLog item = null;

            while (UserOPFileLogQueue.TryDequeue(out item))
            {
                //将item送往用户操作日志表
                //访问数据库的操作写在这里
                BLL.OPLog.Add(item, GlobalStaticObj_Server.DbPrefix + GlobalStaticObj_Server.CommAccCode);
                Interlocked.Decrement(ref queueLength);
            }
            runFlag = false;
        }
Пример #4
0
        /// <summary> 下载文件
        /// </summary>
        /// <param name="fileName">下载文件名称</param>
        /// <returns></returns>
        public Stream DownLoadFile(string fileName, string savePath, string userID, string cookieStr)
        {
            //if (!HXCSession.SessionCookie.CheckPCClientCookieStr(userID,cookieStr))
            //{
            //    return null;
            //}
            //DownFileResponse response = new DownFileResponse();
            //response.FileData = null;
            UserFileOPLog uOpLog = new UserFileOPLog();
            UserIDOP      uOp    = new UserIDOP();

            uOp.UserID      = userID;
            uOp.OPName      = "DownLoadFile";
            uOpLog.userOP   = uOp;
            uOpLog.FileName = fileName;
            string fileFullPath = Path.Combine(SavePath, fileName);//服务器文件路径

            if (!string.IsNullOrEmpty(savePath))
            {
                fileFullPath = Path.Combine(SavePath, savePath, fileName);
            }
            uOpLog.FilePath = fileFullPath;
            if (!File.Exists(fileFullPath))//判断文件是否存在
            {
                return(null);
            }
            FileStream myStream = null;

            try
            {
                uOpLog.sTimeTicks = DateTime.UtcNow.Ticks;
                myStream          = File.OpenRead(fileFullPath);
            }
            catch (Exception ex) {
                uOpLog.eTimeTicks = DateTime.UtcNow.Ticks;
                uOpLog.exeResult  = false;
                return(null);

                throw ex;
            }
            finally
            {
                uOpLog.eTimeTicks = DateTime.UtcNow.Ticks;
                uOpLog.exeResult  = true;
                writeUserFileOpLog(uOpLog);
            }
            return(myStream);
        }
Пример #5
0
        /// <summary> 下载文件
        /// </summary>
        /// <param name="fileName">下载文件名称</param>
        /// <returns></returns>
        public Stream DownLoadFile(string fileName, string savePath, string userID, string cookieStr)
        {
            UserFileOPLog uOpLog = new UserFileOPLog();
            UserIDOP      uOp    = new UserIDOP();

            uOp.UserID      = userID;
            uOp.OPName      = "DownLoadFile";
            uOpLog.userOP   = uOp;
            uOpLog.FileName = fileName;
            string fileFullPath = Path.Combine(GlobalStaticObj_Server.Instance.FilePath, fileName);//服务器文件路径

            if (!string.IsNullOrEmpty(savePath))
            {
                fileFullPath = Path.Combine(GlobalStaticObj_Server.Instance.FilePath, savePath, fileName);
            }
            uOpLog.FilePath = fileFullPath;
            if (!File.Exists(fileFullPath))//判断文件是否存在
            {
                return(null);
            }
            FileStream myStream = null;

            try
            {
                uOpLog.sTimeTicks = DateTime.UtcNow.Ticks;
                myStream          = File.OpenRead(fileFullPath);
            }
            catch (Exception ex) {
                uOpLog.eTimeTicks = DateTime.UtcNow.Ticks;
                uOpLog.exeResult  = false;
                return(null);

                throw ex;
            }
            finally
            {
                uOpLog.eTimeTicks = DateTime.UtcNow.Ticks;
                uOpLog.exeResult  = true;
                writeUserFileOpLog(uOpLog);
            }
            return(myStream);
        }
Пример #6
0
        /// <summary> 上传文件
        /// </summary>
        /// <param name="request">1上传成功,0上传失败</param>
        public UploadFileResponse UploadFile(FileTransferMessage request)
        {
            UploadFileResponse response = new UploadFileResponse();

            response.Flag = false;
            UserFileOPLog uOpLog = new UserFileOPLog();
            UserIDOP      uOp    = new UserIDOP();

            uOp.UserID      = request.UserID;
            uOp.OPName      = "UploadFile";
            uOpLog.userOP   = uOp;
            uOpLog.FileName = request.FileName;

            if (!Directory.Exists(GlobalStaticObj_Server.Instance.FilePath))         //存放的默认文件夹是否存在
            {
                Directory.CreateDirectory(GlobalStaticObj_Server.Instance.FilePath); //不存在则创建
            }
            string path = GlobalStaticObj_Server.Instance.FilePath;

            if (!string.IsNullOrEmpty(request.SavePath))
            {
                path = Path.Combine(GlobalStaticObj_Server.Instance.FilePath, request.SavePath);
            }
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            uOpLog.sTimeTicks = DateTime.UtcNow.Ticks;
            string fileName     = request.FileName;             //文件名
            string fileFullPath = Path.Combine(path, fileName); //合并路径生成文件存放路径

            uOpLog.FilePath = fileFullPath;
            Stream sourceStream = request.FileData;

            if (sourceStream == null)
            {
                return(response);
            }
            if (!sourceStream.CanRead)
            {
                return(response);
            }
            //创建文件流,读取流中的数据生成文件
            using (FileStream fs = new FileStream(fileFullPath, FileMode.Create, FileAccess.Write, FileShare.None))
            {
                try
                {
                    const int bufferLength = 4096;
                    byte[]    myBuffer     = new byte[bufferLength];//数据缓冲区
                    int       count;
                    while ((count = sourceStream.Read(myBuffer, 0, bufferLength)) > 0)
                    {
                        fs.Write(myBuffer, 0, count);
                    }
                    fs.Close();
                    sourceStream.Close();
                    uOpLog.eTimeTicks = DateTime.UtcNow.Ticks;
                    uOpLog.exeResult  = true;
                    response.Flag     = true;
                    return(response);
                }
                catch (Exception ex)
                {
                    uOpLog.eTimeTicks = DateTime.UtcNow.Ticks;
                    uOpLog.exeResult  = false;
                    return(response);

                    throw ex;
                }
                finally {
                    writeUserFileOpLog(uOpLog);
                }
            }
        }
Пример #7
0
        //private static string _savePath = null;
        //private static string SavePath
        //{
        //    get
        //    {
        //        if (_savePath == null)
        //        {
        //            lock (locker)
        //            {
        //                if (_savePath == null)
        //                {
        //                    _savePath = System.Configuration.ConfigurationManager.AppSettings["savePath"].ToString();
        //                }
        //            }
        //        }
        //        return _savePath;
        //    }
        //}

        private static void writeUserFileOpLog(UserFileOPLog uOpLog)
        {
            UserOPFileLogClass.Instance.Add(uOpLog);
        }