By the way, I follows Lahav’s direction (and a few others of you who tried to say the same thing but it went clear over my head). I am very happy with the solution. I just needed a project method flagged with ‘execute on server’ in its properties [or whatever you call it]. Then it was a very simple matter to ‘lookup’ the file on disk on the server and retrieve its contents in a blob. In short: [Lib] contains .SubFolder, .FileName, .FileExt Storage.folder_docLibrary.path is the ‘MAIN PATH’ to the library of documents Then I just needed to write SVR_Lib_GetDocument ( [Lib]UUID ) which was executed on 4D Server.
Because of all your kind tips, I like to just ‘give back’ by providing at least some explanation of how I solved my problem. ————————— // SVR_Lib_GetDocument ( [Lib]UUID ) --> BLOB of the document stored. Is an empty BLOB if nothing could be retrieved // NOTE: THIS IS EXECUTED ON 4D SERVER C_TEXT($1) // the [Lib]UUID to look up C_BLOB($0) // the RESULT we return to the 4D REMOTE C_OBJECT($en_Lib) // the LIB record C_OBJECT($obj_File) // the FILE( ) object $en_Lib:=ds.Lib.get($1) // retrieve the $Lib record. Note that if it does not exist, then the $en_Lib will be NULL If ($en_Lib#Null) // if we have a true $en_Lib entity... (the .get() may not actually retrieve one, possibly) $obj_File:=File(Storage.folder_docLibrary.path+$en_Lib.SubFolder+$en_Lib.FileName+$en_Lib.FileExt) If ($obj_File.isFile) If ($obj_File.exists) // if it actually exists... $0:=$obj_File.getContent() End if End if End if ————————— —— Chris > On Apr 24, 2020, at 6:06 PM, Chris Belanger <macprogram...@gmail.com> wrote: > > Wow! I never knew that. Thanks for explaining, Lahav. — Chris > >> On Apr 24, 2020, at 4:52 PM, lists via 4D_Tech <4d_tech@lists.4d.com> wrote: >> >> Chris, >> >> Just create a regular method, mark it as "Execute on Server" in the method >> properties, then call it just like any other method. You can return >> anything you want in $0 >> >> $myData:=ThisMethodRunOnServer(whatever) >> >> Just make sure to check that little box in the ThisMethodRunOnServer Method >> properties and you are all done... >> >> Lahav >> >> -----Original Message----- >> From: 4D_Tech <4d_tech-boun...@lists.4d.com> On Behalf Of Chris Belanger via >> 4D_Tech >> Sent: Friday, April 24, 2020 4:44 PM >> To: 4D iNUG Technical <4d_tech@lists.4d.com> >> Cc: Chris Belanger <macprogram...@gmail.com> >> Subject: Re: 4D v18 — Need methodology to >> >> Hi Olivier, >> I am looking for SIMPLE, alright. >> I have looked at ‘execute on server’ but I do not see how it sends anything >> to the client other than the process number (in $0). >> What have I missing about it? >> I used it in the past (when I made a ‘communicator’ subsystem in classic 4D) >> but it involved ‘variable to variable’, pausing/resuming processes and the >> like, and involved quite a bit of intricate programming. >> >> — Chris >> >> >>> On Apr 24, 2020, at 5:27 AM, Olivier Flury via 4D_Tech >>> <4d_tech@lists.4d.com> wrote: >>> >>> Maybe too simple for what you need to do, but have a look at the "execute >>> on server" property for project methods. >>> >>> Create a method that is executed on server. It gets as $1 the id of the >>> document you want to display on the client side. The method does everything >>> to fetch the document from the directory on the server etc. and sends it to >>> the client in $0. >>> >>> Keep in mind that this method (executed on server) behaves similar to a >>> trigger method: you are read/write for all tables and you should have your >>> own On Err Call method. >>> >>> Best, >>> >>> Olivier >>> >>> |||||| https://flury-software.ch/ >>> >>> -----Ursprüngliche Nachricht----- >>> Von: 4D_Tech <4d_tech-boun...@lists.4d.com> Im Auftrag von Chris Belanger >>> via 4D_Tech >>> Gesendet: Freitag, 24. April 2020 10:57 >>> An: 4D iNUG Technical <4d_tech@lists.4D.com> >>> Cc: Chris Belanger <macprogram...@gmail.com> >>> Betreff: 4D v18 — Need methodology to >>> >>> I have a methodology of allowing clients to transfer documents that are >>> thereafter stored by 4D Server in a ‘LIBRARY’ of system documents it >>> maintains automatically. [these are not stored in the DB, but in a managed >>> folder on disk.] >>> >>> I do this by: >>> • Loading a system document into a BLOB, then using BASE64 ENCODE to store >>> it in a TEXT field; —— thanks Peter Bozek for the tip on BASE64 ENCODE / >>> DECODE! >>> • the TRIGGER method (running on 4D server) unpacks it and creates / >>> updates the files in its ‘Library’ directory on disk. >>> >>> Now I need to be able to retrieve the contents of these files for 4D >>> [Client]. >>> I can display the files in a Web Area —> Thanks to Keith for the tip. >>> >>> ** But I am looking for a simple way to get 4D Server to ’send’ the data to >>> the CLIENT (4D) upon request. >>> >>> In the past [since v12), I made elaborate ‘communicator’ stored routines to >>> fudge it, but I have a feeling that now there are better ways to do it. >>> >>> I wish it was simple as: >>> Request_Document ( $LibraryEntity ) —> Document Contents [retrieved from >>> the library of user’s documents stored by 4D Server on disk] >>> >>> Any suggestions? Do I have to use Workers, or Stored Procedures, or >>> something? >>> >>> Thank you, guys & gals, >>> >>> Chris Belanger >>> ********************************************************************** >>> 4D Internet Users Group (4D iNUG) >>> Archive: http://lists.4d.com/archives.html >>> Options: https://lists.4d.com/mailman/options/4d_tech >>> Unsub: mailto:4d_tech-unsubscr...@lists.4d.com >>> ********************************************************************** >>> >>> ********************************************************************** >>> 4D Internet Users Group (4D iNUG) >>> Archive: http://lists.4d.com/archives.html >>> Options: https://lists.4d.com/mailman/options/4d_tech >>> Unsub: mailto:4d_tech-unsubscr...@lists.4d.com >>> ********************************************************************** >> >> ********************************************************************** >> 4D Internet Users Group (4D iNUG) >> Archive: http://lists.4d.com/archives.html >> Options: https://lists.4d.com/mailman/options/4d_tech >> Unsub: mailto:4d_tech-unsubscr...@lists.4d.com >> ********************************************************************** >> ********************************************************************** >> 4D Internet Users Group (4D iNUG) >> Archive: http://lists.4d.com/archives.html >> Options: https://lists.4d.com/mailman/options/4d_tech >> Unsub: mailto:4d_tech-unsubscr...@lists.4d.com >> ********************************************************************** > ********************************************************************** 4D Internet Users Group (4D iNUG) Archive: http://lists.4d.com/archives.html Options: https://lists.4d.com/mailman/options/4d_tech Unsub: mailto:4d_tech-unsubscr...@lists.4d.com **********************************************************************