public static WebUploader GetWebUploader(TransferParameter parameter) { try { WebUploader uploader = null; Log.Debug("WebUploader create: url=" + parameter.TransferUrl + ",remoteFile=" + parameter.RemoteFile + ",localFile=" + parameter.LocalFile + ",chunkCount=" + parameter.ChunkSize.ToString()); var uri = new Uri(parameter.TransferUrl); Log.Debug("WebUploader uri.Scheme=" + uri.Scheme); switch (uri.Scheme) { case "http": uploader = new HttpWebUploader(parameter); break; case "ftp": uploader = new FtpWebUploader(parameter); break; } return(uploader); } catch (ArgumentNullException e) { Log.Warn(e); return(null); } catch (UriFormatException e) { Log.Warn(e); return(null); } }
private bool InvokeUpload(string destFileName, string localFileName, int chunkSize) { WebUploader uploader = UploaderFactory.GetWebUploader(new TransferParameter() { ChunkSize = chunkSize, Environment = _environment, LocalFile = localFileName, RemoteFile = destFileName, TransferUrl = UploadUrl, SupportBrokenResume = _supportBorkenResume, SupportDebug = _supportDebug, FileDirectory = FileDirectory }); if (uploader != null) { try { bool hasFinished = false; bool hasException = false; uploader.Completed += new CompletedEventHandler(OnCompleted); uploader.Completed += new CompletedEventHandler(delegate(object sender, CompletedEventArgs args) { hasFinished = true; }); uploader.Progress += new ProgressEventHandle(OnProgress); uploader.ExceptionError += new ExceptionEventHandle(delegate(object sender, ExceptionEventArgs args) { hasException = hasFinished = true; }); uploader.ExceptionError += new ExceptionEventHandle(OnException); uploader.Start(); while (!hasFinished) { Thread.Sleep(100); } if (hasException) { Log.Debug("文件上传遇到问题"); _errmsg = uploader.InnerException.Message; throw uploader.InnerException; } return(true); } catch (Exception ex) { _errmsg = ex.Message; throw new Exception("InvokeUpload error"); } } return(false); }