コード例 #1
0
ファイル: UpLoad.cs プロジェクト: NickHola/Backupper
        private void PercentualeUpload(object sender, UploadProgressChangedEventArgs e)
        {
            if (e == null)
            {
                return;
            }
            UploadItem elem = (UploadItem)e.UserState;

            elem.progressione.Percentage = e.ProgressPercentage;
        }
コード例 #2
0
ファイル: UpLoad.cs プロジェクト: NickHola/Backupper
 private ICredentials DammiCredenziali(ref UploadItem elemUpload)
 {
     if (elemUpload.User != "")
     {
         return(new NetworkCredential(elemUpload.User, elemUpload.Password));
     }
     else
     {
         return(CredentialCache.DefaultCredentials);
     }
 }
コード例 #3
0
ファイル: UpLoad.cs プロジェクト: NickHola/Backupper
        private void ThrAvvioUpload(UploadItem elemUpload)
        {
            Thr.SbloccaThrPadre();

            Thread thrDL;

            thrDL = Thr.AvviaNuovo(() => ThrUpload(ref elemUpload));

            if (Thr.AttesaCompletamento(ref thrDL, (elemUpload.TimeoutSec == -1 ? -1 : elemUpload.TimeoutSec * 1000)) == false)
            { //TimeOut
                elemUpload.DescErr     = "Timeout:<" + elemUpload.TimeoutSec + "> secondi, raggiunto";
                elemUpload.UploadState = UplItemState.Timeout;

                Log.main.Add(new Mess(elemUpload.tipoLogTimeout, "", "per l'url:<" + elemUpload.url + ">, " + elemUpload.DescErr));
            }
        }
コード例 #4
0
ファイル: UpLoad.cs プロジェクト: NickHola/Backupper
        public void Add(UploadItem elemUpload)
        {
            if (elemUpload == null)
            {
                Log.main.Add(new Mess(LogType.ERR, Log.main.errUserText, "Ricevuto elemUpload a nothing"));
                return;
            }

            if (elemUpload.TimeoutSec == 0)
            {
                elemUpload.TimeoutSec = Convert.ToInt16(this.config.DefaultTimeoutSec);
            }

            idItem += 1;
            elemUpload.IdItemInList = idItem;
            Concur.Dictionary_TryAddOrUpdate(queue, new KeyValuePair <UInt64, UploadItem>(idItem, elemUpload), noUpadate: true);
        }
コード例 #5
0
ファイル: UpLoad.cs プロジェクト: NickHola/Backupper
        private void UploadTerminato(Object sender, UploadDataCompletedEventArgs e)
        {
            //Dim client As WebClient = sender
            UploadItem elem = default(UploadItem);

            //If elem.statoDownload = StatiElemDwl.Timeout OrElse elem.statoDownload = StatiElemDwl.Eccezione Then Exit Sub
            try
            {
                elem = (UploadItem)e.UserState;
                if (e.Result == null)
                {
                    return;
                }
                if (elem.UploadState == UplItemState.UplAvviato)
                {
                    elem.UploadState             = UplItemState.UplCompletato;
                    elem.progressione.IsComplete = true;
                }
            }
            catch (TargetInvocationException ex)
            {  //Si verifica quando il threadDownload viene stoppat mentre si sta ancora effettuando il download
                if (elem.UploadState == UplItemState.UplAvviato)
                {
                    elem.UploadState = UplItemState.Eccezione;
                }
                Log.main.Add(new Mess(LogType.Warn, "", "TargetInvocationException, ex.mess:<" + ex.Message + ">"));
                return;
            }
            catch (Exception ex)
            {
                if (elem.UploadState == UplItemState.UplAvviato)
                {
                    elem.UploadState = UplItemState.Eccezione;
                }
                Log.main.Add(new Mess(LogType.Warn, "", "ex.mess:<" + ex.Message + ">"));
                return;
            }
        }
コード例 #6
0
ファイル: UpLoad.cs プロジェクト: NickHola/Backupper
        private void ThrUpload(ref UploadItem elemUpload)
        {
            Thr.SbloccaThrPadre();
            WebClient     client; string suffFileCorrotto; Uri fullUrlIniziale; DateTime tmpAttesa;
            FtpWebRequest ftpWebRequest; FtpWebResponse ftpResponse; FtpStatusCode ftpStatusCode;

            suffFileCorrotto = "";
            client           = new WebClient(); //, flusso As New IO.MemoryStream

            try
            {
                client.UploadDataCompleted   += UploadTerminato;
                client.UploadProgressChanged += PercentualeUpload;

                //client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)") 'Aggiungo lo user agent nell'header nel caso la richiesta contiene una query.

                client.Credentials = DammiCredenziali(ref elemUpload);

                elemUpload.OperationStartDate = DateTime.Now;
                elemUpload.UploadState        = UplItemState.UplAvviato;

                if (elemUpload.UploadType == UploadType.Ftp)
                {
                    if (elemUpload.CorruptFileNameSuffix != "")
                    {
                        suffFileCorrotto = elemUpload.CorruptFileNameSuffix;
                    }
                    else
                    {
                        suffFileCorrotto = config.suffFileCorrotto;
                    }
                }

                fullUrlIniziale = new Uri(Path.Combine(elemUpload.url, elemUpload.FileName) + suffFileCorrotto);

                client.UploadDataAsync(fullUrlIniziale, null, elemUpload.Data, elemUpload);
                //client.UploadData(fullUrl, elemUpload.dati)  'Non scatena glie eventi UploadProgressChanged e UploadDataCompleted

                //AttesaBoolean(client.IsBusy, -1) 'Per le proprità(come IsBusy) se cambia di valore sembra che non lo sente quindi non posso utilizzare AttesaBoolean
                while (client.IsBusy)
                {
                    Thread.Sleep(1);
                }

                tmpAttesa = DateTime.Now;

                while (elemUpload.UploadState == UplItemState.UplAvviato)
                {
                    if (DataOra.AttesaTempo(ref tmpAttesa, 1000) == true)
                    {
                        Log.main.Add(new Mess(LogType.ERR, Log.main.errUserText, "Da quando client non è Busy, lo statoUpload non si è aggiornato in tempo utile, fullUrlIniziale:<" + fullUrlIniziale.OriginalString + ">", visualMsgBox: false));
                        elemUpload.UploadState = UplItemState.Eccezione;
                        client.Dispose();
                        break;
                    }
                }

                client.Dispose();

                if (elemUpload.UploadType == UploadType.Ftp)
                {
                    ftpWebRequest             = (FtpWebRequest)System.Net.FtpWebRequest.Create(fullUrlIniziale);
                    ftpWebRequest.Credentials = DammiCredenziali(ref elemUpload);
                    ftpWebRequest.Method      = System.Net.WebRequestMethods.Ftp.GetFileSize;
                    //MyFtpWebRequest.RenameTo() = nomeFile

                    ftpResponse = (FtpWebResponse)ftpWebRequest.GetResponse();

                    if (elemUpload.Data.Length != ftpResponse.ContentLength)
                    {
                        Log.main.Add(new Mess(LogType.Warn, Log.main.warnUserText, "Rilevate dimensioni differenti tra dati da inviare e dati inviati, elemUpload.dati.Length:<" + elemUpload.Data.Length + ">, ftpResponse.ContentLength:<" + ftpResponse.ContentLength + ">, fullUrlIniziale:<" + fullUrlIniziale.OriginalString + ">"));
                        ftpResponse.Close();
                        return;
                    }

                    ftpResponse.Close();

                    ftpWebRequest             = (FtpWebRequest)System.Net.FtpWebRequest.Create(fullUrlIniziale);
                    ftpWebRequest.Credentials = DammiCredenziali(ref elemUpload);
                    ftpWebRequest.Method      = System.Net.WebRequestMethods.Ftp.Rename;
                    ftpWebRequest.RenameTo    = elemUpload.FileName;
                    ftpResponse = (FtpWebResponse)ftpWebRequest.GetResponse();

                    ftpStatusCode = ftpResponse.StatusCode;

                    if (ftpStatusCode != FtpStatusCode.FileActionOK)
                    {
                        Log.main.Add(new Mess(LogType.Warn, Log.main.warnUserText, "Non sono riuscito a rinominare il file, fullUrlIniziale:<" + fullUrlIniziale.OriginalString + "> in elemUpload.nomeFile:<" + elemUpload.FileName + ">"));
                        ftpResponse.Close();
                        return;
                    }
                    ftpResponse.Close();
                }
            }
            catch (ThreadAbortException ex)  //Thread interrupted by abort, do nothing
            { var tmp = ex; }
            catch (Exception ex)
            {
                Log.main.Add(new Mess(elemUpload.tipoLogEccezione, "", "Eccezione per l'url:<" + elemUpload.url + ">, ex.mess:<" + ex.Message + ">"));
                elemUpload.DescErr     = ex.Message;
                elemUpload.UploadState = UplItemState.Eccezione;
            }
            finally
            {
                client.CancelAsync();
            }
        }