"everyone here seems to already know how to do this." - everyone in this thread has tried to do it, or done it. It isn't as common a thing to do as say, creating a poster selection screen.
For your image url, it needs to be url:"file://tmp:/filename.jpg"
ie "file://pkg:/images/splashsd.jpg" - but tmp instead of pkg
What you would probably do is use your AsyncGetToFile so your channel continues to run and do it's regular work while the file downloads. And wait for the "download successful" event to know as soon as it's done downloading the file, and then draw it to your canvas or roscreen. If you try to draw the image before it has finished downloading then I don't think it will draw as the file will not have been closed. An important point is to set the RequireAllImages to draw to False as suggested above.
If you have a bunch of images, it might make more sense to start the download to tmp as soon as the slideshow section is selected - set it to download them 5 at a time, asynchronously, wait for the transfer succeeded event for one, and ask the user to wait if it's not finished in time with a dialog/busy box display.
You'll need to set a port to receive events from the transfer object -
UT=CreateObject("roUrlTransfer")
port=CreateObject("roMessagePort")
UT.SetPort(port)
UT.SetUrl("http://server.com/file.wav")
UT.AsyncGetToFile("tmp:/file.wav")
In your message loop,
if msg(type)="rourlevent"
If msg.getint()=1 'completed download
...
End If
End If
http://sdkdocs.roku.com/display/sdkdoc/roUrlEventI'm sure someone can clean this code up, but you get the idea? By using the roUrlevent to test when the file has downloaded, there shouldn't be a reason to check the actual directory for the file. Tmp works like a cache system - the oldest files get pushed out to make room for new files (as I understand it)
If you want to check all the files though and file operations, check out the ifFileSystem interface -
http://sdkdocs.roku.com/display/sdkdoc/ifFileSystemYou will not be able to determine how much room is left in local fle systems - so space free for tmp will be useless. And you can't write to external file systems so that info is also rather useless.