HttpWrite: Difference between revisions
No edit summary |
|||
(7 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
{{HTTP function}} | {{HTTP function}} | ||
This function adds text to the output of the current | This function adds text to the output of the current HTTP file of the [[Resource_Web_Access|HTTP interface]]. The function can only be used on parsed (i.e not marked as ''raw'') HTTP pages. httpWrite can support outputing binary data, if you specify the length of the data you are outtputing. If you do this, you should ensure you set an accurate content-type using [[httpSetResponseHeader]] otherwise it may be displayed inconsistently by browsers. | ||
==Syntax== | ==Syntax== | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
bool httpWrite ( string | bool httpWrite ( string data [, int length] ) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===Shortcut syntax=== | ===Shortcut syntax=== | ||
The following shortcut syntax is also supported: | The following shortcut syntax is also supported (the space between the ''<*'' and the ''='' is optional): | ||
<syntaxhighlight lang="lua">[html] | <syntaxhighlight lang="lua">[html] | ||
<* = text *> | <* = text *> | ||
Line 19: | Line 19: | ||
===Required Arguments=== | ===Required Arguments=== | ||
*''' | *'''data:''' the data to be added to the page's output. | ||
===Optional Arguments=== | |||
*'''length:''' The length of the data being written. Generally only should be required for writing binary data. | |||
===Returns=== | ===Returns=== | ||
Line 25: | Line 28: | ||
==Example== | ==Example== | ||
This sample resource page will output a random quote from a player using a function previously exported to http from a Lua script in the resource. | '''Example 1:''' This sample resource page will output a random quote from a player using a function previously exported to http from a Lua script in the resource. | ||
<syntaxhighlight lang="lua">[html] | <syntaxhighlight lang="lua">[html] | ||
<html> | <html> | ||
Line 39: | Line 42: | ||
The second httpWrite call writes the quote generated by the function to the HTML output. | The second httpWrite call writes the quote generated by the function to the HTML output. | ||
'''Example 2:''' Using httpWrite to return a file read in with [[fileRead]]. This is useful as the internal server doesn't not support subdirectories reliably so you can create a page to return files to you. | |||
<syntaxhighlight lang="lua"> | |||
<* | |||
local file = fileOpen ( "icons/icon.png" ) | |||
if file then | |||
while not fileIsEOF(file) do | |||
buffer = fileRead(file, 500) | |||
httpWrite(buffer, buffer:len()) | |||
end | |||
fileClose(file) | |||
httpSetResponseHeader ( "content-type", "image/png") | |||
else | |||
*> | |||
Could not read file | |||
<* | |||
end | |||
*> | |||
</syntaxhighlight> | |||
==See Also== | ==See Also== | ||
{{HTTP functions}} | {{HTTP functions}} |
Latest revision as of 10:27, 14 July 2009
This function adds text to the output of the current HTTP file of the HTTP interface. The function can only be used on parsed (i.e not marked as raw) HTTP pages. httpWrite can support outputing binary data, if you specify the length of the data you are outtputing. If you do this, you should ensure you set an accurate content-type using httpSetResponseHeader otherwise it may be displayed inconsistently by browsers.
Syntax
bool httpWrite ( string data [, int length] )
Shortcut syntax
The following shortcut syntax is also supported (the space between the <* and the = is optional):
[html] <* = text *>
which is equivalent to:
[html] <* httpWrite(text) *>
Required Arguments
- data: the data to be added to the page's output.
Optional Arguments
- length: The length of the data being written. Generally only should be required for writing binary data.
Returns
Returns true if the text was added to the output buffer successfully, false otherwise.
Example
Example 1: This sample resource page will output a random quote from a player using a function previously exported to http from a Lua script in the resource.
[html] <html> <head> <* = call ( getResourceFromName("ajax"), "start", getResourceName(getThisResource()) ) *> </head> <body> <b>Random quote:</b> <* httpWrite( call ( getThisResource(), "getRandomQuote" ) ) *> </body> </html>
The first httpWrite call (in shortcut syntax) adds the links to scripts generated by the ajax resource, enabling use of the getRandomQuote function.
The second httpWrite call writes the quote generated by the function to the HTML output.
Example 2: Using httpWrite to return a file read in with fileRead. This is useful as the internal server doesn't not support subdirectories reliably so you can create a page to return files to you.
<* local file = fileOpen ( "icons/icon.png" ) if file then while not fileIsEOF(file) do buffer = fileRead(file, 500) httpWrite(buffer, buffer:len()) end fileClose(file) httpSetResponseHeader ( "content-type", "image/png") else *> Could not read file <* end *>
See Also
These functions can only be used from within lua blocks in HTML pages hosted by the server
- httpClear
- httpRequestLogin
- httpSetResponseCode
- httpSetResponseCookie
- httpSetResponseHeader
- httpWrite