Local images and the browser widget
Stephen MacLean
smaclean at madmansoft.com
Sun Jul 29 21:46:59 EDT 2018
Hi Mike,
Thanks for that! I was doing the same thing at the same time:)
My code for setting up the server:
local sTempMedia
command setTempMedia
### Set the location of the tempMedia folder
# set the defaultFolder to the folder containing the stackfile
set the itemDelimiter to slash
get the effective filename of this stack
#set tempMedia folder location
put item 1 to - 2 of it & "/tempMedia" into sTempMedia
end setTempMedia
on startHTTPServer
# Launch httpd server to serve local images
setTempMedia
httpdStart "NewRequest", 8090, "imgEngine Server"
end startHTTPServer
on stopHTTPServer
httpdStop 8090
end stopHTTPServer
on NewRequest pSocketID, pRequest
local tPath
put sTempMedia & pRequest["resource"] into of tPath
if there is a file tPath then
local tData
put url ("binfile:" & tPath) into tData
httpdResponse pSocketID, 200, tData
else
-- not found
httpdResponse pSocketID, 404
end if
end NewRequest
My code for embedding it:
# tFileName is just the name of the file. i.e. MyFile.jpg
put "http://localhost:8090/" & (tFileName) into tHero
# other code would follow to meld tHero into my html
and works just amazingly well!!
Thanks again for all your help!
I sure hope this helps someone else as well!
Best,
Steve
> On Jul 29, 2018, at 8:02 PM, Mike Bonner via use-livecode <use-livecode at lists.runrev.com> wrote:
>
> Decided to try using the httpd library, and it seems to work pretty
> nicely. If you want to set up a very simple web picture viewer (VERY
> simple) the following code is a working but minimal start.
>
> local sBaseDir
> on mouseup
> httpdstart "newrequest",8888,"My Picture Server" --start the server on
> port 8888
> put specialfolderpath("desktop") & "/pics" into sBaseDir -- Set this to
> the folder that contains your pictures
> end mouseup
>
> on newRequest pSocketId,pRequest -- handle requests
> if pRequest["resource"] is "/" then -- if the request has no filename,
> give the directory index of jpg files. (I only coded for jpegs)
> put files(sBaseDir) into tFiles
> repeat for each line tLIne in tFiles
> put merge("<a href=[[tLine]]>[[tLine]]</a><br>") & cr after tData
> -- build up the response data for each file
> end repeat
> httpdresponse pSocketId,200,tData -- send the index
> else
> put "Content-Type: image/jpeg ;" into pHeader -- set the content type
> to jpeg
> put URL("binfile:" & sBaseDir & pRequest["resource"]) into tData --
> read the image file and pop it into tData (binary mode)
> httpdresponse pSocketId,200,tData,pHeader -- send the picture data,
> 200 ok code, and set the correct header for picture data
> end if
> end newRequest
>
> If your filenames/paths have spaces, you'd have to jump through some hoops
> to get it to work, and your base path has that space in it, so not sure how
> to get it working. Actually, nevermind. If you change spaces in your
> baseurl to "\ " it may work? I couldn't make it work here (on windows)
> despite trying a whole bunch of ideas, so I cheated and made sure there
> were no spaces.
>
> On Sun, Jul 29, 2018 at 3:21 PM Stephen MacLean via use-livecode <
> use-livecode at lists.runrev.com> wrote:
>
>> Thanks Mike, yes that does work for just displaying the image.
>>
>> I’m building HTML on the fly and wanted to include the local image if
>> there was one, for testing. This will be a moot point for production as
>> everything will be served via a web server, but I was hoping to see this
>> for testing.
>>
>> I will be looking to the new http server LC has as I will need it anyway
>> for doing some API things with this engine.
>>
>> Thanks again to all!
>>
>> Best,
>> Steve
>>
>>> On Jul 29, 2018, at 5:03 PM, Mike Bonner via use-livecode <
>> use-livecode at lists.runrev.com> wrote:
>>>
>>> If you just need to see the image, you can do it by changing your
>> method..
>>>
>>> Instead of setting the htmltext, it should work to set the url to "
>>> http://Users/steve/Dropbox/ITB%20pubEngine/tempMedia/99578
>>> 6d6-4429-4821-8b21-8e811289e12c.jpg"
>>>
>>> I'm not expert, but I think there is some type of cross-domain security
>>> thing interfering here. A web page shouldn't be able to force access to
>> a
>>> file on your system due to security, unless the page originates with you.
>>> And I THINK that directly setting the html basically means there is no
>> base
>>> domain, so it will refuse to show the image. Again, not an expert, so
>> i'm
>>> just making a wag.
>>> If you need more control, you can likely create an html file on the fly
>> and
>>> point your url to that, at which point you can use relative addressing
>> for
>>> your pictures. So, if you created the html file with your code in the
>> same
>>> folder as your stack, you could then place.. <img src=tempMedia/ 99578
>>> 6d6-4429-4821-8b21-8e811289e12c.jpg> into the file and it will likely
>> work.
>>>
>>> Another thing you might look into is running your own simple http server
>>> (which LC now makes easy) so that you can set up a simple server and set
>>> the url to http://localhost:8080/index.html (or whatever port number
>> you
>>> wish, and again, use relative pathing.
>>>
>>> Either of these 2 methods is easier than using long, easily mangled
>>> absolute paths. I haven't delved into the self run server yet, but I
>>> suspect you can do interesting things with it. (Or use the old revhttpd
>>> stack which I HAVE used, and know that it works really well and can do
>>> awesome stuff too)
>>>
>>>
>>>
>>> On Sun, Jul 29, 2018 at 2:32 PM Stephen MacLean via use-livecode <
>>> use-livecode at lists.runrev.com> wrote:
>>>
>>>> Almost afraid to ask this because I feel like it’s a path issue with
>>>> Relative vs Absolute… Remote images display fine in a browser widget,
>> but
>>>> local image files don’t seem to.
>>>>
>>>> This works (displays the image) in script and in the message box:
>>>> put "<img src=" & "http://www.trumbull-ct.gov/images/BoyScouts.jpg" &
>> ">"
>>>> into tHTML
>>>>
>>>> set the htmlText of widget "finished_html_content" to tHTML
>>>>
>>>>
>>>> This does not (Image not displayed) in script or the message box:
>>>> put "<img src=" &
>>>>
>> "file:///Users/steve/Dropbox/ITB%20pubEngine/tempMedia/995786d6-4429-4821-8b21-8e811289e12c.jpg"
>>>> & ">" into tHTML
>>>>
>>>> set the htmlText of widget "finished_html_content" to tHTML
>>>>
>>>>
>>>> Sorry about bombarding the list!
>>>>
>>>> Thanks,
>>>>
>>>> Steve
>>>> _______________________________________________
>>>> use-livecode mailing list
>>>> use-livecode at lists.runrev.com
>>>> Please visit this url to subscribe, unsubscribe and manage your
>>>> subscription preferences:
>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>> _______________________________________________
>>> use-livecode mailing list
>>> use-livecode at lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>
>>
>>
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
More information about the use-livecode
mailing list