Web API Code :
[Route("DownloadFile")]
[HttpGet]
public HttpResponseMessage DownloadFile(string filePath)
{
HttpResponseMessage Response;
//string RootPath = HttpContext.Current.Server.MapPath("~/Upload/");
string FilePath = HttpContext.Current.Server.MapPath(filePath);
if (File.Exists(FilePath) == false)
{
Response = Request.CreateResponse(HttpStatusCode.NotFound, "File does not exist.");
}
else
{
// Serve the file to the client
string AttachmentFileName = null;
string UserAgent = Request.Headers.UserAgent.ToString().ToLower();
bool IsMicrosoftVariant = false;
IsMicrosoftVariant = UserAgent.Contains("msie") || UserAgent.Contains("edge");
//AttachmentFileName = IsMicrosoftVariant == true ? Uri.EscapeDataString(OriginalName) : OriginalName;
AttachmentFileName = string.Format("\"{0}\"", AttachmentFileName);
Response = Request.CreateResponse(HttpStatusCode.OK);
Response.Content = new StreamContent(new FileStream(FilePath, FileMode.Open, FileAccess.Read));
Response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
Response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
Response.Content.Headers.ContentDisposition.FileName = AttachmentFileName;
}
return Response;
}
Angular Sevice Code:
[Route("DownloadFile")]
[HttpGet]
public HttpResponseMessage DownloadFile(string filePath)
{
HttpResponseMessage Response;
//string RootPath = HttpContext.Current.Server.MapPath("~/Upload/");
string FilePath = HttpContext.Current.Server.MapPath(filePath);
if (File.Exists(FilePath) == false)
{
Response = Request.CreateResponse(HttpStatusCode.NotFound, "File does not exist.");
}
else
{
// Serve the file to the client
string AttachmentFileName = null;
string UserAgent = Request.Headers.UserAgent.ToString().ToLower();
bool IsMicrosoftVariant = false;
IsMicrosoftVariant = UserAgent.Contains("msie") || UserAgent.Contains("edge");
//AttachmentFileName = IsMicrosoftVariant == true ? Uri.EscapeDataString(OriginalName) : OriginalName;
AttachmentFileName = string.Format("\"{0}\"", AttachmentFileName);
Response = Request.CreateResponse(HttpStatusCode.OK);
Response.Content = new StreamContent(new FileStream(FilePath, FileMode.Open, FileAccess.Read));
Response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
Response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
Response.Content.Headers.ContentDisposition.FileName = AttachmentFileName;
}
return Response;
}
Angular Sevice Code:
import { HttpClient, HttpRequest, HttpEventType, HttpResponse, HttpHeaders } from '@angular/common/http';
import { Observable, Subject } from 'rxjs';
import {saveFile, saveAs} from 'file-saver';
import { map, filter, catchError, mergeMap } from 'rxjs/operators';
@Injectable()
export class SharedService {
constructor(private http: HttpClient) {}
downloadFile(data: any, filename: string) {
const blob = new Blob([data], { type: 'application/octet-stream' });
saveAs(blob, filename);
}
//This method gets the details of one client.
public getDocument(id: number, fileId: string, fileName: string) {
this.http.get(AppSettings.DOCUMENTDOWNLOAD_ENDPOINT(id, fileId), {responseType: 'blob'})
.subscribe((data) => this.downloadFile(data, fileName), error => console.log('Error downloading the file.'),
() => console.info('OK'));
}
}
Comments
Post a Comment