示例#1
0
        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());
        }
示例#2
0
            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);
                    }
                }
            }
示例#3
0
        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));
        }
示例#4
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.");
     }
 }