protected int SaveToFileHosting(string[] files, int id, string folderPathConst) { // open mega.nz connection MegaApiClient client = new MegaApiClient(); string megaUsername = _configuration[Shared.Constants.UsernameConfigPath]; string megaPassword = _configuration[Shared.Constants.PasswordConfigPath]; client.Login(megaUsername, megaPassword); foreach (var file in files) { if (file.Length > 0) { // prepare string var splitString = file.Split("||"); var fileBase64String = splitString.First(); // prepare file var bytes = Convert.FromBase64String(fileBase64String); using MemoryStream stream = new MemoryStream(); stream.Write(bytes, 0, bytes.Length); stream.Seek(0, SeekOrigin.Begin); // determine file name var fileName = splitString.Length > 2 ? splitString[1] : Guid.NewGuid().ToString(); // save file to mega.nz var folderPath = $"{folderPathConst}{id}"; IEnumerable <INode> nodes = client.GetNodes(); INode cloudFolder = nodes.SingleOrDefault(x => x.Type == NodeType.Directory && x.Name == folderPath); if (cloudFolder == null) { INode root = nodes.Single(x => x.Type == NodeType.Root); cloudFolder = client.CreateFolder(folderPath, root); } var extension = splitString.Last(); INode cloudFile = client.Upload(stream, $"{fileName}.{extension}", cloudFolder); Uri downloadLink = client.GetDownloadLink(cloudFile); // prepare entity var entity = new Attachment { Name = fileName, Url = downloadLink.AbsoluteUri, ExtensionType = extension }; // DetermineEntityNavigation(entity, folderPathConst, id); _dbContext.Add(entity); } } // close mega.nz connection client.Logout(); return(_dbContext.SaveChanges()); }
public void ConnectToDrive(object o) { lock (workerLocker) { try { MegaApiClient client = new MegaApiClient(); client.Login(ConfigurationManager.AppSettings["UserName"], ConfigurationManager.AppSettings["Password"]); var nodes = client.GetNodes(); INode root = nodes.Single(n => n.Type == NodeType.Root); INode myFolder = client.CreateFolder("Upload " + DateTime.Today, root); string source = ConfigurationManager.AppSettings["Source"]; string typeFiles = ConfigurationManager.AppSettings["TypeFile"]; var files = Directory.GetFiles(source, "*." + typeFiles, SearchOption.TopDirectoryOnly); var file = files.OrderByDescending(File.GetLastWriteTime).First(); /* var filterFiles = files.Where((n) => File.GetCreationTime(n).ToShortDateString() == date);*/ using (var stream = new ProgressionStream(new FileStream(file, FileMode.Open), PrintProgression) ) { INode myFile = client.Upload(stream, Path.GetFileName(file), myFolder); client.GetDownloadLink(myFile); } } catch (Exception ex) { var path = Path.Combine(Environment.CurrentDirectory, "log.txt"); //if (!File.Exists(path)) //{ // File.Create(path); //} using (FileStream fs = new FileStream(path, FileMode.Append)) { using (StreamWriter sw = new StreamWriter(fs)) { sw.WriteLine("=========MEGA=============" + Environment.NewLine); sw.WriteLine("-----" + DateTime.Now.ToShortDateString() + "-----" + Environment.NewLine); sw.WriteLine(ex.Message); } }; } finally { run = 0; Monitor.Pulse(workerLocker); } } }
public Task UploadFile(Stream stream, string filename, int chunkSize) { var nodes = _service.GetNodes(); INode root = nodes.Single(s => s.Type == NodeType.Root); if (chunkSize != 0) { _service.ChunksPackSize = chunkSize; } try { _service.Upload(stream, filename, root); } catch (Exception e) { Console.WriteLine(e); throw; } Console.WriteLine("Done uploading"); return(Task.FromResult(0)); }
async void Button2Click(object sender, EventArgs e) { try { label1.Text = "Uploading..."; OpenFileDialog ofd = new OpenFileDialog(); ofd.Multiselect = true; DialogResult dr = ofd.ShowDialog(); if (dr == DialogResult.OK) { foreach (string fileName in ofd.FileNames) { await Task.Run(() => mclient.Upload(fileName, mcNode)); } } label1.Text = "Uploaded Successfully."; RefreshNodes(); } catch (Exception ex) { label1.Text = "Upload Error."; MessageBox.Show("An error occurred uploading the file."); } }