The :file type is primarily meant for accepting files over interfaces. You’d add a file as an argument, and then use a change on the action to take that file and do something with it. Like you can move it from the temporary directory it is uploaded to by default when it’s a plug.upload, etc.
Correct on the admin question, but not yet, but we would like to implement that
You can potentially use Waffle, although not something like WaffleEcto
create :create_user do
argument :profile_photo, :file
change fn changeset, _ ->
Ash.Changeset.before_transaction(changeset, fn changeset, _ ->
if upload = changeset.arguments[:file] do
url = <upload to s3>
Ash.Changeset.force_change_attribute(changeset, :profile_photo_url, url)
else
changeset
end
end
end
end