I am using waffle to upload images locally. The problem is generated file name has version bursting along with it
mix.exs
{:waffle, "~> 1.1.0"},
{:waffle_ecto, "~> 0.0.11"},
avatar.ex
defmodule MyApp.Avatar do
use Waffle.Definition
use Waffle.Ecto.Definition
@versions [:original, :thumb]
@extension_whitelist ~w(.jpg .jpeg .gif .png)
def validate({file, _}) do
file_extension = file.file_name |> Path.extname |> String.downcase
case Enum.member?(@extension_whitelist, file_extension) do
true -> :ok
false -> {:error, "file type is invalid"}
end
end
def transform(:thumb, _) do
{:convert, "-strip -thumbnail 100x100^ -gravity center -extent 100x100"}
end
def filename(version, {file, scope}) do
[name, _] = String.split( "#{file.file_name}", ".")
"#{version}_#{name}"
end
def storage_dir(_, {file, user}) do
"uploads"
end
end
image.ex
defmodule MyApp.Common.Image do
use Ecto.Schema
import Ecto.Changeset
use Waffle.Ecto.Schema
schema "image" do
field :active, :boolean, default: true
field :image_details, MyApp.Avatar.Type
timestamps()
end
def changeset(image, attrs) do
image
|> cast_attachments(attrs, [:image_details])
|> validate_required([:image_details])
end
end
image_controller.ex
defmodule MyAppWeb.ImageController do
alias MyApp.Common
alias MyApp.Common.Image
alias MyApp.Avatar
def multple_image_uploade(conn, params) do
image_attached = params["image_attached"];
{:ok, file_name} = Avatar.store({image_attached, _current_user = %{id: 1}})
Common.create_image(%{image_details: image_attached})
end
end
common.ex
defmodule MyApp.Common do
alias MyApp.Common.Image
def create_image(attrs \\ %{}) do
%Image{}
|> Image.changeset(attrs)
|> Repo.insert()
end
end
Query: select * from image;
Output
id | active | inserted_at | updated_at | image_details
----±-------±--------------------±--------------------±----------------------------------------------------------
30 | true | 2022-04-06 09:53:45 | 2022-04-06 09:53:45 | Screenshot from 2022-03-25 11-01-45.png?63816458025
31 | true | 2022-04-06 09:57:21 | 2022-04-06 09:57:21 | Screenshot from 2022-02-22 12-02-50.png?63816458241
32 | true | 2022-04-06 10:02:39 | 2022-04-06 10:02:39 | yes.jpg?63816458559
33 | true | 2022-04-06 10:40:28 | 2022-04-06 10:40:28 | yes.jpg?63816460828