<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def from_file(self, file, store=current_store, extra_args=None, extra_kwargs=None):
 """Stores the ``file`` for the image into the ``store``. :param file: the readable file of the image :type file: file-like object, :class:`file` :param store: the storage to store the file. :data:`~sqlalchemy_imageattach.context.current_store` by default :type store: :class:`~sqlalchemy_imageattach.store.Store` :param extra_args: additional arguments to pass to the model's constructor. :type extra_args: :class:`collections.abc.Sequence` :param extra_kwargs: additional keyword arguments to pass to the model's constructor. :type extra_kwargs: :class:`typing.Mapping`\ [:class:`str`, :class:`object`] :returns: the created image instance :rtype: :class:`Image` .. versionadded:: 1.0.0 The ``extra_args`` and ``extra_kwargs`` options. """


        if isinstance(file, cgi.FieldStorage):
            file = file.file

        data = io.BytesIO()
        shutil.copyfileobj(file, data)
        data.seek(0)
        return self.from_raw_file(data, store, original=True,
                                  extra_args=extra_args,
                                  extra_kwargs=extra_kwargs)