Type Function Library display.* Return value none Revision Release 2024.3703 Keywords networking, downloading, image download, remote image See also network.download() network.request()
This a convenience method, similar to network.download(), which returns a display object containing the image, as well as saving the image to a file.
display.loadRemoteImage( url, method, listener [, params], destFilename [, baseDir] [, x, y] )
String. The HTTP request URL which should point to a valid remote PNG or JPG file.
String. The HTTP method; acceptable values are "GET"
(default) or "POST"
.
Listener. The listener function invoked when the HTTP operation has completed. It is passed an event
object that contains the following properties:
event.response
— a string containing the destination file name. This is useful if you're writing a general event handler for a variety of file downloads.event.target
— the new display object created after the image is downloaded.event.isError
— a Boolean value: true
in the case of a network error; false
if not.Table. See the Parameters section for more information.
String. The name of the file to which the HTTP response will be saved.
Constant. The folder path to which the file will be saved.
Numbers. The x and y coordinates to place the newly created display object, once the file has been successfully downloaded and saved.
The params
table is an optional table that specifies custom HTTP headers or body to include in the request. To specify custom headers, attach a headers
table that specifies header values with string keys. To specify a custom body message, attach a body
property to this table whose string value is the HTTP body.
local params = {} params.headers = {} -- contains header values to send with your request params.body = "" -- specific body to send with your request
Table. A table specifying header values with string keys.
String. Contains the HTTP body to send with your request.
Nothing is returned from calling this function. The listener callback will contain the display object value (event.target
) if the download was successful.
local function networkListener( event ) if ( event.isError ) then print ( "Network error - download failed" ) else event.target.alpha = 0 transition.to( event.target, { alpha = 1.0 } ) end print ( "event.response.fullPath: ", event.response.fullPath ) print ( "event.response.filename: ", event.response.filename ) print ( "event.response.baseDirectory: ", event.response.baseDirectory ) end display.loadRemoteImage( "https://plugins.solar2d.com/images/logo-banner.png", "GET", networkListener, "logo-banner.png", system.TemporaryDirectory, 50, 50 )
--The 'display.loadRemoteImage()' API call is a convenience method around the 'network.request()' API. --The code below is the implementation of 'display.loadRemoteImage()'. If you need to cancel your call, --feel free to use the code below and modify it to your needs. local function networkListener( event ) if ( event.isError ) then print ( "Network error - download failed" ) else event.target.alpha = 0 transition.to( event.target, { alpha = 1.0 } ) end print ( "event.response.fullPath: ", event.response.fullPath ) print ( "event.response.filename: ", event.response.filename ) print ( "event.response.baseDirectory: ", event.response.baseDirectory ) end local function remoteImageListener( self, event ) local listener = self.listener local target if ( not event.isError and event.phase == "ended" ) then target = display.newImage( self.filename, self.baseDir, self.x, self.y ) event.target = target end listener( event ) end -- display.loadRemoteImage( url, method, listener [, params], destFilename [, baseDir] [, x, y] ) display.loadRemoteImage = function( url, method, listener, ... ) local arg = { ... } local params, destFilename, baseDir, x, y local nextArg = 1 if ( "table" == type( arg[nextArg] ) ) then params = arg[nextArg] nextArg = nextArg + 1 end if ( "string" == type( arg[nextArg] ) ) then destFilename = arg[nextArg] nextArg = nextArg + 1 end if ( "userdata" == type( arg[nextArg] ) ) then baseDir = arg[nextArg] nextArg = nextArg + 1 else baseDir = system.DocumentsDirectory end if ( "number" == type( arg[nextArg] ) and "number" == type( arg[nextArg + 1] ) ) then x = arg[nextArg] y = arg[nextArg + 1] end if ( destFilename ) then local options = { x=x, y=y, filename=destFilename, baseDir=baseDir, networkRequest=remoteImageListener, listener=listener } if ( params ) then network.download( url, method, options, params, destFilename, baseDir ) else network.download( url, method, options, destFilename, baseDir ) end else print( "ERROR: no destination filename supplied to display.loadRemoteImage()" ) end end display.loadRemoteImage( "https://plugins.solar2d.com/images/logo-banner.png", "GET", networkListener, "logo-banner.png", system.TemporaryDirectory, display.contentCenterX, display.contentCenterY )