Skip to main content

Download File Angular 8 And ASP.NET Web API 2

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:

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

Popular posts from this blog

Referenced assembly does not have a strong name

  Steps to create strong named assembly Step 1 : Run visual studio command prompt and go to directory where your DLL located.   For Example my DLL located in  D:/hiren/Test.dll Step 2 : Now create  il file using below command.    D:/hiren> ildasm /all /out=Test.il Test.dll   (this command generate code library) Step 3 : Generate new Key for sign your project.    D:/hiren> sn -k mykey.snk Step 4 : Now sign your library using ilasm command.    D:/hiren> ilasm /dll /key=mykey.snk Test.il so after this step your assembly contains strong name and signed. Jjust add reference this new assembly in your project and compile project its running now. codeproject.com/Tips/341645/Referenced-assembly-does-not-have-a-strong-name

SQL Server(from 2012) FileTable Features some useful SQL Statements

The FileTable feature brings support for the Windows file namespace and compatibility with Windows applications to the file data stored in SQL Server. FileTable lets an application integrate its storage and data management components, and provides integrated SQL Server services - including full-text search and semantic search - over unstructured data and metadata.( FileTable ) Here is sequential SQL statements to enable,alter existing database for FileStream and create FileTable --check current config value EXEC sp_configure filestream_access_level; --reconfig GO EXEC sp_configure 'filestream access level',   2 Go RECONFIGURE GO -- chack file table enabled databases  SELECT DB_NAME(database_id) as [Database Name], non_transacted_access, non_transacted_access_desc ,directory_name FROM sys.database_filestream_options --  Enable a file table in an existing Database ALTER DATABASE TestDB  SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECT...

FTP(File Transfer Protocol ) configuration and testing in Windows Server 2008 R2

First of all you have to know  what the FTP is " File Transfer Protocol ( FTP ) is a standard network protocol used to transfer files from one host or to another host over a TCP -based network". FTP Installation & Configuration: Step 1: Install the Web Server role with the IIS Management Console and FTP Server role services: Step 2: Add a new FTP Site Step 3: Setup the site with the default bindings and choose Allow SSL to avoid deploying a certificate:     Step 4: Configure user permissions and basic or anonymous permission. If your server is connected to your domain you can specify domain users, otherwise they must be local user accounts: Note: Finally you’ll have to configure your server’s firewall rules to allow access.Disregard any existing FTP firewall rules; although they should be enabled, they don’t actually allow access! Run Allow a Program Through Windows Firewall and grant access to C:\Windows\System32\svchost.exe T...