public virtual void GetFile(string pathRemoteFile, ref Stream fileStrem) { //DTO.RegistrationAttatchFile attachFile = new DTO.RegistrationAttatchFile(); //if (_attachFiles.Where(a => a.ATTACH_FILE_TYPE == type).Count() <= 0) // throw new RegisterationException("ไม่พบเอกสารแนบตามประเภทที่ต้องการ !!!"); //attachFile = _attachFiles.Where(a => a.ATTACH_FILE_TYPE == type).FirstOrDefault(); using (FileService.FileTransferServiceClient svc = new FileService.FileTransferServiceClient()) { DownloadFileResponse response = svc.DownloadFile(new DownloadFileRequest() { TargetContainer = "", TargetFileName = pathRemoteFile }); if (response.Code != "0000") { throw new IOException(response.Message); } fileStrem = response.FileByteStream; } }
/// <summary> /// Download File จาก File Server /// </summary> /// <param name="httpResponse">Current Response from Page</param> /// <param name="folderContrainner">Folder ที่เก็บไฟล์</param> /// <param name="fileName">ชื่อไฟล์</param> public void DownloadFile(System.Web.HttpResponse httpResponse, string folderContrainner, string fileName) { //ระบุตำแหน่งไฟล์และที่เก็บบน File Server //FileService.DownloadRequest requestData = new FileService.DownloadRequest(); //FileService.RemoteFileInfo fileInfo = new FileService.RemoteFileInfo(); //string resMsg = svc.DownloadFile(ref fileName, folderContrainner, out fileInfo.Length, out fileInfo.FileByteStream); DownloadFileResponse response = new DownloadFileResponse(); response = svc.DownloadFile(new DownloadFileRequest() { TargetContainer = folderContrainner, TargetFileName = fileName }); Stream fileStream = response.FileByteStream; httpResponse.Clear(); httpResponse.BufferOutput = true; // Set Response.ContentType httpResponse.ContentType = response.ContentType; //GetContentType(fileExtension); // Append header httpResponse.AppendHeader("Content-Disposition", "attachment; filename=" + fileName); // Write the file to the Response const int bufferLength = 10000; byte[] buffer = new Byte[bufferLength]; int length = 0; Stream download = null; try { download = response.FileByteStream; // GetFile(fileName); do { if (httpResponse.IsClientConnected) { length = download.Read(buffer, 0, bufferLength); httpResponse.OutputStream.Write(buffer, 0, length); buffer = new Byte[bufferLength]; } else { length = -1; } }while (length > 0); httpResponse.Flush(); httpResponse.End(); } finally { if (download != null) { download.Close(); } } }