Yxizzy

Yxizzy

Hey, I am trying to upload an image to Elixir from a form and then to gcs using arc. The form returns an empty response from Elixir on submit. Whenever I upload an image, I get empty parameter from Elixir, please what can be the cause, why is Elixir receiving empty parameters. I am new to using Elixir and Arc, so I will like to confirm if my code is correct.

This is my mix.exs file

{:arc_gcs, "~> 0.1.0"},
{:arc_ecto, "~> 0.11.1"},
{:arc, "~> 0.11.0"}

Then my route for creating the post is
resources “/images”, ImagesController, except: [:new, :edit]

My Images Controller.create

def create(conn, images_params) do
  images_params["id"]})
    with {:ok, %Images{} = images} <- Images.create_images(images_params) do
      conn
      |> put_status(:created)
      |> put_resp_header("location", images_path(conn, :show, images))
      |> render("show.json", images: images)
    end
  end

This is my Images Model

 schema "image" do
       field :name, :string
       field :image, Myapp.Avatar.Type

       timestamps()
     end

     @doc false
     def changeset(images, attrs) do
       images
       |> cast(attrs, [:name])
       |> validate_required([:name])
       |> put_name
       |> cast_attachments(attrs, [:image])
       
       
     end

     def put_name(changeset) do
      case changeset do
        %Ecto.Changeset{
          valid?: true,
          changes: %{upload: %Plug.Upload{content_type: "image/" <> _, filename: name}}
        } ->
          put_change(changeset, :name, name)
        _ ->
          changeset
      end
     end

     def store(%Plug.Upload{} = upload, image) do
      Avatar.store({upload, image})
    end
  
    def url(image, version) do
      Avatar.url({image.name, image}, version)
    end

end

And finally my Arc Uploader

@versions [:original]

  def __storage, do: Arc.Storage.GCS

  def gcs_object_headers(:original, {file, _scope}) do
    [content_type: MIME.from_path(file.file_name)]
  end

  #To add a thumbnail version:
   @versions [:original, :thumb]

  # Override the bucket on a per definition basis:
  # def bucket do
  #   :custom_bucket_name
  # end

  # Whitelist file extensions:
  def validate({file, _}) do
    ~w(.jpg .jpeg .gif .png) |> Enum.member?(Path.extname(file.file_name))
  end

  def transform(:thumb, _file) do
    {:convert, "-thumbnail x#{@heights[:thumb]} -gravity center -format jpg"}
  end
  def transform(:show, _file) do
    {:convert, "-strip -resize x#{@heights[:show]} -gravity center -format png"}
  end

  def storage_dir(version, {_, image}) do
    "uploads/posts/images/#{image.id}/#{version}"
  end

  def filename(_version, {file, _}) do
    Path.rootname(file.file_name)
  end
end

This is expected to receive the uploaded image from the web and save it on Google Cloud Storage but the I'm still getting an empty parameter. I have been on this for days, any help at all would be really appreciated, please someone should look into this and tell me where I might be getting it wrong.

Thanks

Showing Posts 1 to 2

OvermindDL1

OvermindDL1

Anything in the logs? What’s the EEX contents? Etc… :slight_smile:

alvinncx

alvinncx

Did you pass multipart: true in your form_for function?

— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
apz
I’m new to elixir and just tried to install the elixirLS extension for VScode(ium) and it is throwing some errors that I would like help ...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews