private void PercentualeUpload(object sender, UploadProgressChangedEventArgs e) { if (e == null) { return; } UploadItem elem = (UploadItem)e.UserState; elem.progressione.Percentage = e.ProgressPercentage; }
private ICredentials DammiCredenziali(ref UploadItem elemUpload) { if (elemUpload.User != "") { return(new NetworkCredential(elemUpload.User, elemUpload.Password)); } else { return(CredentialCache.DefaultCredentials); } }
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)); } }
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); }
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; } }
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(); } }