Jump to content

Stuart Clennett

Members
  • Content Count

    46
  • Joined

  • Last visited

  • Days Won

    1

Stuart Clennett last won the day on December 13 2018

Stuart Clennett had the most liked content!

Community Reputation

15 Good

Technical Information

  • Delphi-Version
    Delphi 10.1 Berlin

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. SOLVED My VM had an out of date Windows 11 installation (22H2), with no TPM module enabled. I created a fresh VM and installed the latest Win 11 Pro and the installation has gone through.
  2. I've tried both Web and ISO installer. Win 11 VM (fresh install) with over 200Gb free on C drive. Windows defender turned off. Installers run as Admin. Installing for Windows development only (no iOS, Mac, Android or Linux). The installer gets about 50% of the way through and stops with this: The file is present and is not locked. Pressing Try Again immediately shows the same dialog. There was one attempt I made which I thought was working, but then stopped with the same message, but a different file: "LinuxPAServer23.0.tar.gz". When I press Cancel, this is the message I see: The retry option goes back to the start and eventually I get the same error message. Anyone got any ideas? Thanks.
  3. Stuart Clennett

    Using an API endpoint as src for img tag ?

    Thanks Andrea - I'll look into that.
  4. Stuart Clennett

    Using an API endpoint as src for img tag ?

    Hi @Andrea Magni I implemented it using a simple base64 encoded string. Is there any benefit to using TStringWriter given that I may need the API to support web front ends written in a JS framework like Angular ? Thanks
  5. HI, [Context] Request: TWebRequest; should be changed to [Context] Request: IMARSRequest; you'll need to include MARS.Core.RequestAndResponse.Interfaces in your uses clause. Regards
  6. Hi, I am auto-renewing the JWT token on the server (as per the TokenAutoRenew demo). Having received the JWT token string from the server how do I update the client MARSToken with that value. The properties are read-only. Thanks
  7. Stuart Clennett

    Using an API endpoint as src for img tag ?

    So I'm back to this. I'm currently thinking of using Data-URLs to get the base64 image data and embed direcly into the Angular client app. (ref: https://css-tricks.com/data-uris/ & https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) Note that with the above TBytes solution I seem to get the response "[255, 0, 255, 0, 45, 56, 67 ..... ]" as text rather than raw bytes. The end point has the response type set as 'image/jpeg'
  8. Hi, Not sure if I'm on the right track here. I have a legacy database that has some images stored in blob fields in the database (I know). I'd like to be able to expose these images directly from the REST API, e.g. localhost:8080/rest/default/images/{id} I guess I have to set the Produces attribute to `image/jpeg` .. but what data type should I return? I've tried TBytes but although I get the bytes returned in Postman - web browsers don't load the image. Thanks
  9. Stuart Clennett

    Handling MultipartFormData

    @alejandro The demo does not save the file at all. You are required to implement that. However it is quite simple. For example, in the `StoreDataAndFile` method in `Server.Resources.pas` you could use a memory stream to access the Bytes and save to a file if SameText(LParam.FieldName, 'image') and LParam.IsFile then begin Result.FileSize := Length(LParam.AsFile.Bytes); Result.FileName := LParam.AsFile.FileName; // This will save the file lStream := TMemoryStream.Create; try lStream.Write(LParam.AsFile.Bytes, Length(LParam.AsFile.Bytes)); lStream.SaveToFile(TPath.Combine(C_RootPath, TPath.GetFileName(LParam.AsFile.FileName))); finally lStream.free; end; end In this instance, `C_RootPath` is just a folder on the server where uploaded files should be saved, but you could make this dynamic based on user info in the Token for example. Hope this helps
  10. Thanks @Andrea Magni - I spotted the difference immediately after posting my question. Just going through and updating my servers now. Hope you're all safe & well.
  11. FIXED. The function signature now uses IMARSResponse and IMARSRequest from MARS.Core.ResponseAndRequest.Interfaces D'oh 🙂
  12. Hi all, I've upgraded to MARS 1.4 and I'm hitting this compiler error on all my servers - including the MARSTemplate servers: [dcc32 Error] Server.Ignition.pas(86): E2010 Incompatible types: 'TBeforeHandleRequestProc' and 'Procedure' This is in response to the following: FEngine.BeforeHandleRequest := function (const AEngine: TMARSEngine; const AURL: TMARSURL; const ARequest: TWebRequest; const AResponse: TWebResponse; var Handled: Boolean ): Boolean begin Result := True; { code snip } end; which is in class constructor TServerEngine.CreateEngine. I'm not that great with anonymous methods & can't figure this one out. Thanks in advance,
  13. Hi @Andrea Magni Ah brilliant, I wondered what "IsReference" meant 😄 Thanks again
  14. Stuart Clennett

    FireDAC Connections

    Hello Andrea, That's excellent, thank you very much for your detailed answer. I agree with you that the Connection attribute seems a much cleaner implementation and I will have a go at refactoring my project. Thanks again, Best wishes, Stuart
×