Exemple #1
0
    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        try
        {
            FileTransferServiceReference.ITransferService clientDownload = new TransferServiceClient();
            FileTransferServiceReference.DownloadRequest  requestData    = new DownloadRequest();

            FileTransferServiceReference.RemoteFileInfo fileInfo = new RemoteFileInfo();
            requestData.FileName = "codebase.zip";

            fileInfo = clientDownload.DownloadFile(requestData);

            Response.BufferOutput = false;   // to prevent buffering
            byte[] buffer    = new byte[6500];
            int    bytesRead = 0;

            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.ClearHeaders();
            HttpContext.Current.Response.ContentType = "application/octet-stream";
            HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + requestData.FileName);

            bytesRead = fileInfo.FileByteStream.Read(buffer, 0, buffer.Length);

            while (bytesRead > 0)
            {
                // Verify that the client is connected.
                if (Response.IsClientConnected)
                {
                    Response.OutputStream.Write(buffer, 0, bytesRead);
                    // Flush the data to the HTML output.
                    Response.Flush();

                    buffer    = new byte[6500];
                    bytesRead = fileInfo.FileByteStream.Read(buffer, 0, buffer.Length);
                }
                else
                {
                    bytesRead = -1;
                }
            }
        }
        catch (Exception ex)
        {
            // Trap the error, if any.
            System.Web.HttpContext.Current.Response.Write("Error : " + ex.Message);
        }
        finally
        {
            Response.Flush();
            Response.Close();
            Response.End();
            System.Web.HttpContext.Current.Response.Close();
        }
    }
Exemple #2
0
    private void Download()
    {
        String fileName = TextBox_FileName.Text;

        if (String.IsNullOrWhiteSpace(fileName))
        {
            return;
        }

        // 如果文件在服务器上,可以直接使用下面的方法,进行文件下载
        // 直接向 HTTP 流输出响应,而不在内存中缓存它
        // Response.TransmitFile("file");
        try
        {
            TransferServiceClient proxy = new TransferServiceClient("basicHttpUpload");
            DownloadRequest requestInfo =
                new DownloadRequest
                {
                    FilePath = Path.Combine(Server.MapPath("~/TempFiles"), fileName)
                };

            Response.Clear();
            Response.ClearHeaders();
            Response.ContentType = "application/octet-stream";

            Response.AddHeader("Content-Disposition", "attachment; filename=" + FileNameHelper.GetDownloadFileName(fileName));

            try
            {
                UploadAndDownloadFile fileInfo = proxy.DownloadFile(requestInfo);
                fileInfo.FileByteStream.CopyTo(Response.OutputStream, 1024 * 100);
                proxy.Close();
            }
            catch (TimeoutException)
            {
                proxy.Abort();
            }
            catch (CommunicationException)
            {
                proxy.Abort();
            }

            Response.End();
        }
        catch (Exception ex)
        {
            Response.Write("Error : " + ex.Message);
        }
        finally
        {
            Response.End();
            Response.Close();
        }
    }
Exemple #3
0
        private void Download(string uploadFolder)
        {
            DownloadRequest uploadRequestInfo = new DownloadRequest();

            //uploadRequestInfo.FileName = treeView1.SelectedNode.FullPath;

            uploadRequestInfo.FileName = @"D:\Cursova\Clients\mykhailo\folder2\20140412_221449.mp4";

            RemoteFileInfo request = new RemoteFileInfo();

            request.Length = service.DownloadFile(ref uploadRequestInfo.FileName, out request.FileName, out request.FileByteStream);


            FileStream targetStream = null;
            Stream     sourceStream = request.FileByteStream;


            if (String.IsNullOrEmpty(uploadFolder))
            {
                uploadFolder = @"D:\Cursova\";
            }



            string filePath = Path.Combine(uploadFolder, Path.GetFileName(request.FileName));

            using (targetStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
            {
                const int bufferLen = 65000;
                byte[]    buffer    = new byte[bufferLen];
                int       count     = 0;
                while ((count = sourceStream.Read(buffer, 0, bufferLen)) > 0)
                {
                    targetStream.Write(buffer, 0, count);
                }
                targetStream.Close();
                sourceStream.Close();
            }

            MessageBox.Show("download completed");
        }
Exemple #4
0
        static void Main(string[] args)
        {
            TransferServiceClient proxy = new TransferServiceClient();

            Stream stream   = new MemoryStream();
            string filename = string.Empty;

            var result = proxy.DownloadFile(ref filename, out stream);

            using (Stream file = File.Create(filename))
            {
                stream.CopyTo(file);
            }

            stream.Dispose();

            Console.ReadLine();
        }