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); } }
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); } }