Firstly, that method is so exploitable, shouldn't just allow the $download var to be put in the include path directly without any validation. http://en.wikipedia.org/wiki/File_inclusion_vulnerability
Secondly, the route you have probably isn't picking that up. Do the 3 parts of the URI need to be dynamic? '{project}/{task}/{download}' will match /abc/abc/abc or 1/2/3, as long as there's 3 segments.
Thirdly, not sure if {download} will pick up abc.jpg, you may need to put {download}.{type} or something.