[dancer-users] setting mime type

Puneet Kishor punk.kish at gmail.com
Mon Jul 1 18:53:17 BST 2013

On Jul 1, 2013, at 10:18 AM, Yanick Champoux <yanick at babyl.dyndns.org> wrote:

> On 13-06-30 02:51 AM, Mr. Puneet Kishor wrote:
>> but I need to set the correct mime type for the video. How do I do that with Dancer?
> if you use 'send_file', Dancer will try to guess a decent miem type based on the file's extension.
> If not, you can manipulate the content type via 'response->content_type( 'some/type' )'

I am going to reformulate my question. I have the following code --

In my browser

    <div id="content"></div>

    <script id="tmpl" type="text/x-handlebars-template">
        {{{ text }}}

    var tmpl = Handlebars.compile( $("#tmpl").html() );

        url	: "/v/" + page,
        type	: "GET",
        dataType: "json",
        error	: function() { alert("Error loading html document"); },
        success : function(res) {
            if (res == null) { return; }
            document.title = res.title;
            $("#content").html( tmpl( {text: res.text} ); );

On my server

    get '/v/:page' => sub {
        my $page = param('page');
        my ($title, $modified_on) = get_page($page);
        debug "sending back $uri";
        my %tmpl_opts = (
            title => $title,
            text  => qq{
                <video width="960" height="540" poster="path/to/movie.jpg" controls preload="auto">
                    <source type="video/mp4" src="path/to/movie.mp4" />
                    <source type="video/ogg" src="path/to/movie.ogv" />
                    <source type="video/webm" src="path/to/movie.webm" />
                    Sorry, your browser has no video playback capabilities
            modified_on => $modified_on
        return to_json \%tmpl_opts;

The above code works fine on all browsers on the desktop. However, on Safari on iPad the video is disabled. Dancer is running on Starman behind an Apache proxy.

A static test page with the video code (no ajax, no JavaScript templates) served directly by Apache works fine even on Safari on iPad.

What am I doing wrong, and how can I correct this?

Puneet Kishor

More information about the dancer-users mailing list