Wt  3.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Public Member Functions | List of all members
Wt::WFileResource Class Reference

A resource which streams the data from a local file. More...

#include <Wt/WFileResource>

Inheritance diagram for Wt::WFileResource:
Inheritance graph
[legend]

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.
virtual void handleRequest (const Http::Request &request, Http::Response &response)
 Handles a request.
- Public Member Functions inherited from Wt::WStreamResource
 WStreamResource (WObject *parent=0)
 Default constructor.
 WStreamResource (const std::string &mimeType, WObject *parent=0)
 Creates a new resource with given mime-type.
 ~WStreamResource ()
 Destructor.
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.
- Public Member Functions inherited from Wt::WResource
 WResource (WObject *parent=0)
 Creates a new resource.
 ~WResource ()
 Destroys the resource.
void suggestFileName (const Wt::WString &name, DispositionType dispositionType=Attachment)
 Suggests a filename to the user for the data streamed by this resource.
const Wt::WString & suggestedFileName () const
 Returns the suggested file name.
void setDispositionType (DispositionType cd)
 Configures the Content-Disposition header.
DispositionType dispositionType () const
 Returns the currently configured content disposition.
void setChanged ()
 Generates a new URL for this resource and emits the changed signal.
void setInternalPath (const std::string &path)
 Sets an internal path for this resource.
std::string internalPath () const
 Returns the internal path.
const std::string & generateUrl ()
 Generates an URL for this resource.
const std::string & url () const
 Returns the current URL for this resource.
Signal & dataChanged ()
 Signal emitted when the data presented in this resource has changed.
void setUploadProgress (bool enabled)
 Indicate interest in upload progress.
Signal< ::uint64_t,::uint64_t > & dataReceived ()
 Signal emitted when data has been received for this resource.
void write (std::ostream &out, const Http::ParameterMap &parameters=Http::ParameterMap(), const Http::UploadedFileMap &files=Http::UploadedFileMap())
 Stream the resource to a stream.
void haveMoreData ()
 Indicate that more data is available.
- Public Member Functions inherited from Wt::WObject
 WObject (WObject *parent=0)
 Create a WObject with a given parent object.
virtual ~WObject ()
 Destructor.
virtual const std::string id () const
 Returns the (unique) identifier for this object.
void setObjectName (const std::string &name)
 Sets an object name.
virtual std::string objectName () const
 Returns the object name.
void resetLearnedSlots ()
 Resets learned stateless slot implementations.
template<class T >
void resetLearnedSlot (void(T::*method)())
 Resets a learned stateless slot implementation.
template<class T >
WStatelessSlot * implementStateless (void(T::*method)())
 Declares a slot to be stateless and learn client-side behaviour on first invocation.
template<class T >
WStatelessSlot * implementStateless (void(T::*method)(), void(T::*undoMethod)())
 Declares a slot to be stateless and learn client-side behaviour in advance.
template<class T >
WStatelessSlot * implementJavaScript (void(T::*method)(), const std::string &jsCode)
 Provides a JavaScript implementation for a method.
void addChild (WObject *child)
 Adds a child object.
virtual void removeChild (WObject *child)
 Removes a child object.
const std::vector< WObject * > & children () const
 Returns the children.
WObject * parent () const
 Returns the parent object.

Additional Inherited Members

- Public Types inherited from Wt::WResource
enum  DispositionType { NoDisposition, Attachment, Inline }
 Values for the disposition type in the Content-Disposition header. More...
- Protected Member Functions inherited from Wt::WStreamResource
void handleRequestPiecewise (const Http::Request &request, Http::Response &response, std::istream &input)
 Handles a request and streams the data from a std::istream.
- Static Protected Member Functions inherited from Wt::WObject
static WObject * sender ()
 Returns the sender of the current slot call.

Detailed Description

A resource which streams the 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");
See Also
WStreamResource, WMemoryResource

Constructor & Destructor Documentation

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).

Member Function Documentation

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::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.


Generated on Mon Aug 25 2014 for the C++ Web Toolkit (Wt) by doxygen 1.8.1.2