Exemplo n.º 1
0
        public File(string path, int maxSizeFilePart)
        {
            while (IsFileLocked(path))
            {
                System.Threading.Thread.Sleep(10);
            }
            var file   = System.IO.File.ReadAllBytes(path);
            var file__ = Packaging.EncodeBase64(file);

            //var file = System.IO.File.ReadAllText(path);
            //var file_ = Packaging.Zip(file);
            //var file__ = Packaging.EncodeBase64(file_);

            fileObjects = new System.Collections.Generic.List <FileObject>();

            var count = (uint)System.Math.Ceiling((double)file__.Length / maxSizeFilePart);

            int runner = 0;

            var id_    = System.Guid.NewGuid().ToString();
            var fname_ = System.IO.Path.GetFileName(path);

            for (uint i = 0; i < count; ++i)
            {
                var fileObject = new FileObject()
                {
                    id       = id_,
                    filename = fname_,
                    index    = i,
                    count    = count
                };

                if (i < count - 1)
                {
                    fileObject.content = file__.Substring(runner, maxSizeFilePart);
                    runner            += maxSizeFilePart;
                }
                else
                {
                    fileObject.content = file__.Substring(runner);
                }

                fileObjects.Add(fileObject);
            }
        }
Exemplo n.º 2
0
        public void receiveFile([Fraunhofer.IPA.MSB.Client.API.Attributes.MsbFunctionParameter(Name = "fileObject")] FileObject fileObject, Fraunhofer.IPA.MSB.Client.API.Model.FunctionCallInfo info)
        {
            var id = fileObject.id;

            if (!fileEvents.ContainsKey(id))
            {
                fileEvents.Add(id, new System.Collections.Generic.List <FileObject>());
            }

            if (!lastEvents.ContainsKey(id))
            {
                lastEvents.Add(id, DateTime.Now);
            }
            else
            {
                lastEvents[id] = DateTime.Now;
            }

            var ev = fileEvents[id];

            ev.Add(fileObject);

            if (ev.Count == ev[0].count)
            {
                var    file = new File(ev);
                string target_path;
                if (target_dir != "")
                {
                    target_path = target_dir + "/" + ev[0].filename;
                    target_path.Replace("//", "/");
                }
                else
                {
                    target_path = ev[0].filename;
                }
                file.writeToFile(target_path);
                fileEvents.Remove(id);
                lastEvents.Remove(id);
            }
        }