Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
        }