A resource which streams data from a local file. More...
#include <Wt/WFileResource>
Public Member Functions | |
WFileResource (WObject *parent=0) | |
Default constructor. | |
WFileResource (const std::string &fileName, WObject *parent=0) | |
Creates a new resource for a file. | |
WFileResource (const std::string &mimeType, const std::string &fileName, WObject *parent=0) | |
Creates a new resource with given mime-type for a file. | |
~WFileResource () | |
Destructor. | |
void | setFileName (const std::string &fileName) |
Sets a (different) filename. | |
const std::string & | fileName () const |
Returns the filename. | |
void | setMimeType (const std::string &mimeType) |
Sets the mime-type. | |
const std::string & | mimeType () const |
Returns the mime-type. | |
void | setBufferSize (int size) |
Configures the buffer size. | |
int | bufferSize () const |
Returns the buffer size. | |
virtual void | handleRequest (const Http::Request &request, Http::Response &response) |
Handles a request. |
A resource which streams data from a local file.
To update the resource, either use setFileName() to point it to a new file, or emit the WResource::dataChanged() signal when only the file contents has changed, but not the filename.
The resource makes use of continuations to transmit data piecewise, without blocking a thread or requiring the entire file to be read in memory. The size of the buffer can be changed using setBufferSize().
Usage examples:
Wt::WFileResource *csvFile = new Wt::WFileResource("text/csv", "/opt/files/afile.csv"); csvFile->suggestFileName("data.csv"); Wt::WAnchor *anchor = new Wt::WAnchor(csvFile, "CSV data"); Wt::WFileResource *imageFile = new Wt::WFileResource("image/png", "/opt/files/image.png"); imageFile->suggestFileName("data.png"); Wt::WImage *image = new Wt::WImage(imageFile, "PNG version");
Wt::WFileResource::WFileResource | ( | WObject * | parent = 0 ) |
Default constructor.
You need to set a file name (and mime type) for the resource using setFileName() and setMimeType().
Wt::WFileResource::WFileResource | ( | const std::string & | fileName, |
WObject * | parent = 0 |
||
) |
Creates a new resource for a file.
The mime type defaults to "text/plain".
Wt::WFileResource::~WFileResource | ( | ) |
Destructor.
It is up to the user to make sure that the resource is no longer in use (by e.g. a WImage).
int Wt::WFileResource::bufferSize | ( | ) | const |
Returns the buffer size.
void Wt::WFileResource::handleRequest | ( | const Http::Request & | request, |
Http::Response & | response | ||
) | [virtual] |
Handles a request.
Reimplement this method so that a proper response is generated for the given request. From the request
object you can access request parameters and whether the request is a continuation request. In the response
object, you should set the mime type and stream the output data.
A request may also concern a continuation, indicated in Http::Request::continuation(), in which case the next part for a previously created continuation should be served.
While handling a request, which may happen at any time together with event handling, the library makes sure that the resource is not being concurrently deleted, but multiple requests may happend simultaneously for a single resource.
Implements Wt::WResource.
void Wt::WFileResource::setBufferSize | ( | int | size ) |
Configures the buffer size.
This configures the size of the buffer used to transmit the file piece by piece.
void Wt::WFileResource::setFileName | ( | const std::string & | fileName ) |
Sets a (different) filename.
Set the location of the file on the local filesystem which must be streamed for this resource.