File Download

Hello,

I would like offer download from a standalone xojo app (Microsoft). but I don’t know how to do this. The following source code I programmed, but it doesn’t work:

dim wf as new WebFile dim s as string ' s = "AIT_ATTACHMENTS/TEXTFILE.PDF" dim fd as FolderItem = GetFolderItem(s) if fd <> nil and fd.Exists then wf = WebFile.Open(fd) wf.ForceDownload = true if wf <> nil then ShowURL(wf.URL) end if else msgbox " not found " + s + " --- " + app.ExecutableFile.Parent.URLPath end if

The folder “AIT_ATTACHMENTS” is in the same folder as the standalone execution file.

Are there any more explanations or examples available for handling files?
I don’t know how to specify a path and filenames. I don’t know, what kind of tags I have to use. For example: “C:/AITTACHEMENT…”.

Can anybody give me a tip? Thank’s in advance?

Edit (Paul): Added Code tag.

I offer downloads to my customers with a program I started with an example that comes with Xojo :
Xojo 2014 Release 1/Example Projects/Web/Downloading/Downloading.xojo_binary_project

If the OS is Windows then your folder delimiter is backwards. Windows uses \ not /. To make this xplat you should do

s = "AIT_ATTACHMENTS" dim fd as FolderItem = GetFolderItem(s).child("TEXTFILE.PDF")

Thank you both. Now it works. That is the running source code:

dim s as string
Dim f As Folderitem = App.ExecutableFile.Parent.Child(s)

s =  "AIT_ATTACHMENTS\\TEXTFILE.PDF"
If f <> Nil And f.Exists Then
  Session.DownloadFile = WebFile.Open(f)
  Session.DownloadFile.ForceDownload = False
End If

If Session.DownloadFile <> Nil Then
  me.ExecuteJavaScript("window.open('" + Session.DownloadFile.URL + "','Download');")
  'ShowURL(Session.DownloadFile.URL)
Else
  MsgBox("The selected  file is not available.")
End If

I used a webfile property of the session (property name = DownloadFile) instead of a declared variable, how ever.

Because of the behaviour in Internet Explorer I didn’t used “ShowURL”, because the user have to use the “Back”-button. In that case the user have to login again. It’s not a good behaviour.
To avoid this, I used “… executeJavaScript(window.open…”.