Recent

Author Topic: How to get mimetype of file  (Read 4330 times)

heejit

  • Full Member
  • ***
  • Posts: 245
How to get mimetype of file
« on: March 19, 2018, 03:42:04 pm »
I am sending binary file as follow but not able to get the right mime type is there any unit/function
to get the mimetype from the file name
Code: Pascal  [Select][+][-]
  1. procedure TApiModule.do_dwnd(Sender: TObject; ARequest: TRequest; AResponse: TResponse; var Handled: boolean);
  2. var
  3.   fname: string;
  4. begin
  5.   try
  6.     fname := DATA_DIR + PathDelim + ARequest.GetNextPathInfo;
  7.     AResponse.ContentStream := TMemoryStream.Create;
  8.     (AResponse.ContentStream as TMemoryStream).LoadfromFile(fname);
  9.     AResponse.ContentLength := AResponse.ContentStream.Size;
  10.     AResponse.ContentType := 'application/octet-stream';
  11.     AResponse.SendContent;
  12.   finally
  13.     AResponse.ContentStream.Free;
  14.   end;
  15.   Handled := True;
  16. end;
  17.  

Leledumbo

  • Hero Member
  • *****
  • Posts: 8746
  • Programming + Glam Metal + Tae Kwon Do = Me
Re: How to get mimetype of file
« Reply #1 on: March 19, 2018, 04:23:15 pm »
https://github.com/graemeg/freepascal/blob/master/packages/fcl-base/src/fpmimetypes.pp
Note that you must supply the mime.types file yourself (through MimeTypes.LoadFromFile), there's no default.

heejit

  • Full Member
  • ***
  • Posts: 245
Re: How to get mimetype of file
« Reply #2 on: March 19, 2018, 05:22:48 pm »
I have the file how to use the fpmimetypes

heejit

  • Full Member
  • ***
  • Posts: 245
Re: How to get mimetype of file
« Reply #3 on: March 19, 2018, 05:37:28 pm »
Working now
Code: Pascal  [Select][+][-]
  1.   self.m_mime := TFPMimeTypes.Create(self);
  2.   self.m_mime.LoadFromFile('/etc/mime.types');
  3.   file_Ext := ExtractFileExt(fname);
  4.  AResponse.ContentType   := self.m_mime.GetMimeType(file_ext);
  5.  

Leledumbo

  • Hero Member
  • *****
  • Posts: 8746
  • Programming + Glam Metal + Tae Kwon Do = Me
Re: How to get mimetype of file
« Reply #4 on: March 19, 2018, 08:07:21 pm »
Working now
Code: Pascal  [Select][+][-]
  1.   self.m_mime := TFPMimeTypes.Create(self);
  2.   self.m_mime.LoadFromFile('/etc/mime.types');
  3.   file_Ext := ExtractFileExt(fname);
  4.  AResponse.ContentType   := self.m_mime.GetMimeType(file_ext);
  5.  
There's already MimeTypes function that returns a singleton instance (I even referenced it if you carefully read my reply).

heejit

  • Full Member
  • ***
  • Posts: 245
Re: How to get mimetype of file
« Reply #5 on: March 20, 2018, 12:48:33 am »
Updated this is better
Code: Pascal  [Select][+][-]
  1. MimeTypes.LoadFromFile('/etc/mime.types');
  2. file_Ext := ExtractFileExt(fname);
  3. AResponse.ContentType   := MimeTypes.GetMimeType(file_ext);
  4.  

 

TinyPortal © 2005-2018