示例#1
0
        public bool PostFile(string fileName, long fileSize, string buf, int bufLen)
        {
            FileStream fl = null;
            long       fSize;

            try
            {
                byte [] bbuf = CConvert.FromBase64ToBytes(buf);
                if (bbuf.Length != bufLen)
                {
                    CLog.stWriteLog(CLog.LogSeverityLevels.lslError, this,
                                    String.Format(fileName + " : Buffer length not equal with parameter {0} > {1}", bbuf.Length, bufLen));
                    return(false);
                }

                if (CIO.FileExists(fileName))
                {
                    fl = File.Open(fileName, FileMode.Append, FileAccess.Write, FileShare.Read);
                    FileInfo fi = new FileInfo(fileName);
                    fSize = fi.Length;
                }
                else
                {
                    fl    = File.Create(fileName);
                    fSize = 0;
                }

                if ((fSize + bbuf.Length) > fileSize)
                {
                    CLog.stWriteLog(CLog.LogSeverityLevels.lslError, this,
                                    String.Format(fileName + " : The received size of the data will exceed the specified size of a file {0} : {1}",
                                                  (fSize + bbuf.Length), fileSize));
                    return(false);
                }

                fl.Write(bbuf, 0, bbuf.Length);
                return(true);
            }
            catch (Exception ex)
            {
                CLog.stLogException(new Exception("PostFile:", ex));
                return(false);
            }
            finally
            {
                if (fl != null)
                {
                    fl.Close();
                }
            }
        }