public FileTaskStatus ValidateData()
        {
            var response = new FileTaskStatus();

            var stream = (MemoryStream)MemoryCacheManager.MemoryCache.Get(fileName);

            using (var reader = ExcelReaderFactory.CreateReader(stream))
            {
                //// Use the AsDataSet extension method
                //studentData = reader.AsDataSet(GetExcelDataSetConfig());

                //List<string> badSheets = new List<string>();

                //if (VerifyColumnHeaders(studentData, badSheets))
                //{
                //    response.Success = true;
                //    response.Message = $"File was opened and in the correct format";
                //}
                //else
                //{
                //    response.Success = false;
                //    response.Message = $"File was opened but one or more sheets have invalid coumns. { string.Join(", ", badSheets)}";
                //    response.Data = badSheets;
                //}
            }

            return(response);
        }
        public FileTaskStatus ReadFile(string path)
        {
            var      response = new FileTaskStatus();
            FileInfo fileInfo = new FileInfo(path);

            fileName = fileInfo.Name;
            if (fileInfo.Exists)
            {
                using (var stream = File.Open(path, FileMode.Open, FileAccess.Read))
                {
                    MemoryStream memStream = new MemoryStream();
                    memStream.SetLength(stream.Length);
                    stream.Read(memStream.GetBuffer(), 0, (int)stream.Length);
                    IMemoryCache memoryCache = MemoryCacheManager.MemoryCache;
                    memoryCache.Set(fileInfo.Name, memStream);
                }
                response.Success = true;
                response.Message = $"File saved in cache {fileName}";
            }
            else
            {
                response.Success = false;
                response.Message = $"File does not exist {fileName}";
            }

            return(response);
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="task"></param>
        private void TransferSingleTaskBigFile(FileTask task)
        {
            /// 请求 server 端打开文件, 并获取 FileStreamId
            task.FileStreamId = GetFileStreamId(task);
            if (task.FileStreamId == -1)
            {
                task.Status = FileTaskStatus.Failed;
                Record.CurrentTaskIndex++;
                return;
            }


            /// 创建本地 FileStream
            localFileStream = new FileStream(task.LocalPath, FileMode.OpenOrCreate,
                                             task.Type == TransferType.Upload ? FileAccess.Read : FileAccess.Write);


            /// 运行下载子线程
            FileTaskStatus result = RunTransferSubThreads(task);

            /// 结束 Transfer, 关闭 FileStream
            localFileStream.Close();
            localFileStream = null;

            /// 请求server端关闭并释放文件
            try
            {
                SocketClient sc = SocketFactory.GenerateConnectedSocketClient(task, 1);
                if (task.Type == TransferType.Upload)
                {
                    sc.SendBytes(SocketPacketFlag.UploadPacketRequest, new byte[1], task.FileStreamId, -1);
                }
                else
                {
                    sc.SendHeader(SocketPacketFlag.DownloadPacketRequest, task.FileStreamId, -1);
                }
                sc.Close();
            }
            catch (Exception ex)
            {
                Logger.Log("Transfer finished. But server FileStream not correctly closed. " + ex.Message, LogLevel.Warn);
            }

            /// 判断从子线程退出返回原因是否是 Pause
            if (IsStopDownloading)
            {
                task.Status = FileTaskStatus.Pause;
            }
            else
            {
                task.Status = result;
            }
        }
Example #4
0
        public void OnUsersDataReaderEventStatus(string fname, FileDataType dtype, FileTaskStatus status, object data)
        {
            //检查是否当前文件

            {
                switch (status)
                {
                case FileTaskStatus.Progressing:
                {
                    break;
                }

                case FileTaskStatus.Success:
                {
                    {
                        JObject   jdata      = data as JObject;
                        int       vercode    = JsonHelper.GetInteger(jdata, ClientConfig.KEY_DATA_VERSION_CODE);
                        UsersData _usersData = new UsersData(jdata, vercode);

                        //对旧数据整体迁移加密之后回存;
                        if (vercode != ClientConfig.DataVersionCode)
                        {
                            fname = string.Format("{0}/{1}.txt", Application.dataPath + filePath, "userinfo");
                            if (File.Exists(fname))
                            {
                                File.Delete(fname);
                            }

                            fname = string.Format("{0}/{1}.ts", Application.dataPath + filePath, "userinfo");


                            FileManager.Instance.AsyncWriteEncryptZipJsonObject(fname, _usersData.Serialize(ClientConfig.DataVersionCode), null);
                        }
                        Debug.LogError("_usersData:" + _usersData.CurrentUserID);
                        //ApplicationUI.Instance.closeWindowObject(WINDOWOBJECT_TYPE.PROGRESSWINDOW, SHOW_EFFECT.NONE, true);
                    }

                    break;
                }

                case FileTaskStatus.Failed:
                {
                    //*_*ApplicationUI.Instance.closeWindowObject(WINDOWOBJECT_TYPE.PROGRESSWINDOW, SHOW_EFFECT.NONE, true);
                    //*_*PromptManager.Instance.ShowPrompt(5019, null, null, null);
                    break;
                }
                }
            }
        }