예제 #1
0
        public TResult <bool> UploadRedLinesAddiotionalFiles(string filename, System.IO.Stream stream)
        {
            System.Diagnostics.Debug.Assert(false);
            try
            {
                string user        = System.Web.HttpContext.Current.Request.Headers["user"];
                string project     = System.Web.HttpContext.Current.Request.Headers["projectname"];
                string layer       = System.Web.HttpContext.Current.Request.Headers["layer"];
                string uid         = System.Web.HttpContext.Current.Request.Headers["owner"];
                string description = System.Web.HttpContext.Current.Request.Headers["description"];
                string extension   = System.Web.HttpContext.Current.Request.Headers["extension"];

                LogHandler.WriteLog("Service.cs: UploadRedLinesAddiotionalFiles.  : Starting" + filename, EventLogEntryType.Information);
                //var parser = new HttpMultipartParser.MultipartFormDataParser(stream);
                var parser = new HttpMultipartParser.StreamingMultipartFormDataParser(stream);
                parser.ParameterHandler += parameter => { };
                // Write the part of the file we've recieved to a file stream. (Or do something else)

                filename = filename + "." + extension;
                LogHandler.WriteLog("Service.cs: UploadRedLinesAddiotionalFiles.  : Creating File " + filename, EventLogEntryType.Information);
                var write = File.OpenWrite("c:\\temp\\" + filename);


                //object comosobject = System.Web.HttpContext.Current.ApplicationInstance.Application["ComosAPI"];
                //IBRServiceContracts.IServiceContract m_ComosAPIService = (IBRServiceContracts.IServiceContract)comosobject;
                IServiceContract m_ComosAPIService = GetComosAPI();


                parser.FileHandler += (name, fileName, type, disposition, buffer, bytes) =>
                {
                    LogHandler.WriteLog("   Service.cs: UploadRedLinesAddiotionalFiles.  : Write block to File " + filename, EventLogEntryType.Information);
                    write.Write(buffer, 0, bytes);
                };
                parser.StreamClosedHandler += () =>
                {
                    LogHandler.WriteLog("   Service.cs: UploadRedLinesAddiotionalFiles.  :  File stream closed" + filename, EventLogEntryType.Information);
                    // Do things when my input stream is closed
                    write.Flush();
                    write.Close();
                    write.Dispose();

                    using (var reader = System.IO.File.OpenRead("c:\\temp\\" + filename))
                    {
                        RemoteFileInfo fileInfo = new RemoteFileInfo()
                        {
                            FileByteStream = reader,
                            Project        = project,
                            User           = user,
                            Owner          = uid,
                            Workinglayer   = layer,
                            FileName       = filename,
                            Extension      = extension,
                            Description    = description,
                        };
                        m_ComosAPIService.CreateRedLinesAndAditionalDocuments(fileInfo);
                    }
                };
                parser.Run();
            }
            catch (Exception ex)
            {
                LogHandler.WriteLog("Service.cs: UploadRedLinesAddiotionalFiles.  : Exception = " + ex.Message, EventLogEntryType.Error);

                return(new TResult <bool>()
                {
                    Status = false,
                    Message = ex.Message,
                    data = false
                });
            }
            //return null;
            return(new TResult <bool>()
            {
                data = true,
                Status = true,
            });
        }