upload returns sensible error when source directory is missing