File like object support

@ustudio/dev Ready for review.
should we change `file_path` to something like `in_file`?