예제 #1
0
파일: Manager.cs 프로젝트: JonG87/Terri
        private void UploadButton_Click(object sender, EventArgs e)
        {
            Cursor = Cursors.WaitCursor;
            try
            {
                // get some info about the input file
                FileInfo fileInfo = new FileInfo(FileTextBox.Text);

                // show start message
                LogText("Starting uploading " + fileInfo.Name);
                LogText("Size : " + fileInfo.Length);

                // open input stream
                using (FileStream stream = new FileStream(FileTextBox.Text, FileMode.Open, FileAccess.Read))
                {
                    using (StreamWithProgress uploadStreamWithProgress = new StreamWithProgress(stream))
                    {
                        uploadStreamWithProgress.ProgressChanged += uploadStreamWithProgress_ProgressChanged;

                        // start service client
                        TerriFileTransferServiceClient terri = new TerriFileTransferServiceClient();

                        // upload file
                        terri.UploadFile(fileInfo.Name, fileInfo.Length, _getuser, uploadStreamWithProgress);

                        LogText("Done!");
                        listBox1.Items.Clear();
                        getContents();
                        // close service client
                        terri.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                LogText("Exception : " + ex.Message);
                if (ex.InnerException != null) LogText("Inner Exception : " + ex.InnerException.Message);
            }
            finally
            {
                Cursor = Cursors.Default;
            }
        }
예제 #2
0
파일: Manager.cs 프로젝트: JonG87/Terri
        private void DownloadButton_Click_1(object sender, EventArgs e)
        {
            Cursor = Cursors.WaitCursor;
            try
            {
                // start service client
                TerriFileTransferServiceClient terri = new TerriFileTransferServiceClient();

                LogText("Start");

                // kill target file, if already exists
                string filePath = Path.Combine(_getuser, textBox1.Text);
                if (File.Exists(filePath)) File.Delete(filePath);

                // get stream from server
                Stream inputStream;
                string fileName = textBox1.Text;
                long length = terri.DownloadFile(ref fileName, ref _getuser,out inputStream);

                // write server stream to disk
                using (FileStream writeStream = new FileStream(filePath, FileMode.CreateNew, FileAccess.Write))
                {
                    int chunkSize = 2048;
                    byte[] buffer = new byte[chunkSize];

                    do
                    {
                        // read bytes from input stream
                        int bytesRead = inputStream.Read(buffer, 0, chunkSize);
                        if (bytesRead == 0) break;

                        // write bytes to output stream
                        writeStream.Write(buffer, 0, bytesRead);

                        // report progress from time to time
                        progressBar1.Value = (int)(writeStream.Position * 100 / length);
                    } while (true);

                    // report end of progress
                    LogText("Done!");
                    listBox2.Items.Clear();
                    getDownloadContents();

                    writeStream.Close();
                }

                // close service client
                inputStream.Dispose();
                terri.Close();
            }
            catch (Exception ex)
            {
                LogText("Exception : " + ex.Message);
                if (ex.InnerException != null) LogText("Inner Exception : " + ex.InnerException.Message);
            }
            finally
            {
                Cursor = Cursors.Default;
            }
        }