Add missing semicolon
Add force extension option

If no extension is specified in the destination, use the extension
of the source file or figure out the extension based on the content
type of the source file
Pass back destinationData in final callback