<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="175174" data-post-id="175174">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="idi527" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  idi527
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><img src="https://forum.elixirforum.com/images/emoji/apple/waving_hand.png?v=15" title=":waving_hand:" class="emoji only-emoji" alt=":waving_hand:" loading="lazy" width="20" height="20"></p>
<p>Judging by the url (<code>https://s3.amazonaws.comuploads</code>) and your <code>storage_dir</code> function, maybe the string returned from <code>storage_dir</code> needs to have a leading <code>/</code> like</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">def storage_dir(_, {_, _}) do
  "/uploads/company_logo"
end
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="175174" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ive-forked-arc-to-waffle-and-merged-all-open-prs/25559/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-175174" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="175174"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #29"></div>
  </section>
</div>
    <div class="postbit" id="175170" data-post-id="175170">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="tjdam" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/tjdam/120/20256_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  tjdam
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I just switched to Waffle at 1.1.0!<br>
waffle_ecto  was yelling at me saying it should be 1.0.0, though.<br>
I marked it to override, it should be fine, yeah?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="175170" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ive-forked-arc-to-waffle-and-merged-all-open-prs/25559/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-175170" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="175170"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #28"></div>
  </section>
</div>
    <div class="postbit" id="175122" data-post-id="175122">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="joselo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/joselo/120/22316_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  joselo
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks for your work in Waffle, I’m newbie in Elixir, Using Arc I had this error</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">02:45:58.484 [warn] ExAws: HTTP ERROR: :nxdomain for URL: "https://s3.amazonaws.comuploads/company_logo/2e24af00-a7ad-4bd9-b5e2-8328f2690a9b_original.png?uploads=1" ATTEMPT: 10

</code></pre>
<p>I changed to use Waffle and I still get the same error.</p>
<p>This is really weird, because I tested in my local machine and it works. I’m using Phoenix, run the server in production mode and the image is uploaed to S3 successfully. But in production I have a E2 instance and I get the same error <code>:nxdomain.. etc.</code>.</p>
<p>As you can see in the url the bucket name doesn’t appear, and also the <code>host</code> is joined with the <code>uploads/company_logo</code> directory.</p>
<p>I’m not sure if this is an issue of the <code>ex_aws</code> or is a issue that comes from Arc.</p>
<p>This is part of my code, if you can help me, I really appreciate, thanks!!</p>
<pre data-code-wrap="elixir"><code class="lang-elixir"># The waffer_ecto module
defmodule Datasets.Storage.CompanyLogo 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 |&gt; Path.extname |&gt; String.downcase
    Enum.member?(@extension_whitelist, file_extension)
  end

  def transform(:thumb, _) do
    {:convert, "-thumbnail 100x100^ -gravity center -extent 100x100 -format png", :png}
  end

  def filename(version, {_file, scope}) do
    "#{scope.uuid}_#{version}"
  end

  def storage_dir(_, {_, _}) do
    "uploads/company_logo"
  end
end

</code></pre>
<pre data-code-wrap="elixir"><code class="lang-elixir"># config/prod.exs

# AWS Credentials
config :ex_aws,
  access_key_id: [{:system, "AWS_ACCESS_KEY_ID"}, :instance_role],
  secret_access_key: [{:system, "AWS_SECRET_ACCESS_KEY"}, :instance_role],
  json_codec: Jason

# Mailer using AWS
config :web, Mailer.Dispatcher, adapter: Bamboo.SesAdapter

#  Waffle config
config :waffle,
  storage: Waffle.Storage.S3,
  bucket: {:system, "S3_BUCKET"}
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="175122" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ive-forked-arc-to-waffle-and-merged-all-open-prs/25559/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-175122" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="175122"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #27"></div>
  </section>
</div>
    <div class="postbit" id="174949" data-post-id="174949">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="achempion" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/achempion/120/21179_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  achempion
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve published the new version <code>v1.1.0</code>. We’ve had 30 releases after the fork so far.</p>
<p>Now Waffle respects the <code>content-disposition</code> header for file uploads by url. It means it’ll save a file with a name from the header if it’s present.</p>
<p>Kudos to <a class="mention" href="/u/ndarilek" rel="nofollow">@ndarilek</a> for the work.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="174949" data-batch-url="/posts/batch_likers">
                        7
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ive-forked-arc-to-waffle-and-merged-all-open-prs/25559/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-174949" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="174949"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #26"></div>
  </section>
</div>
    <div class="postbit" id="169927" data-post-id="169927">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="achempion" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/achempion/120/21179_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  achempion
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It’s uploading library, you can upload any type of the file you want.<br>
You can generate a link to the file as well.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="169927" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ive-forked-arc-to-waffle-and-merged-all-open-prs/25559/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-169927" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="169927"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #25"></div>
  </section>
</div>
    <div class="postbit" id="169901" data-post-id="169901">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Kurisu" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Kurisu/120/14820_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Kurisu
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="achempion" data-post="17" data-topic="25559">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/achempion/48/21179_2.png" class="avatar"> achempion:</div>
<blockquote>
<p>If you have any feature suggestions or ideas on improvement you can write here <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"> We’ll reach 100 stars on GitHub soon.</p>
</blockquote>
</aside>
<p>Hey <a class="mention" href="/u/achempion" rel="nofollow">@achempion</a>,</p>
<p>Please does Waffle support video uploads to aws s3 bucket, and can it generates links that can be used to play these videos on demand in a HTML page?</p>
<p>Thanks for your work.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="169901" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ive-forked-arc-to-waffle-and-merged-all-open-prs/25559/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-169901" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="169901"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #24"></div>
  </section>
</div>
    <div class="postbit" id="167587" data-post-id="167587">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="evtauri" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  evtauri
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h1><a name="p-167587-anyone-for-waffles-an-open-source-file-upload-library-for-elixir-1" class="anchor" href="#p-167587-anyone-for-waffles-an-open-source-file-upload-library-for-elixir-1" aria-label="Heading link" rel="nofollow"></a>Anyone for Waffles? An open-source file upload library for Elixir</h1>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://evrone.com/blog/waffle-elixir-library">
  <header class="source">
      <img src="https://evrone.com/images/favicon.ico" class="site-icon" alt="" width="64" height="64">

      <a href="https://evrone.com/blog/waffle-elixir-library" target="_blank" rel="noopener nofollow ugc">evrone.com</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:690/460;"><img src="https://evrone.com/sites/default/files/n-fields/cases/waffle_evrone.png" class="thumbnail" alt="" width="690" height="460"></div>

<h3><a href="https://evrone.com/blog/waffle-elixir-library" target="_blank" rel="noopener nofollow ugc">Waffle is an open-source file upload library for Elixir by Evrone</a></h3>

  <p>Waffle is an open-source file upload library supported by Evrone. You can use it for uploading files and images in Elixir programming language and Phoenix framework with straightforward integrations for Amazon S3 and ImageMagick.</p>


  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>
 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="167587" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ive-forked-arc-to-waffle-and-merged-all-open-prs/25559/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-167587" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="167587"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #23"></div>
  </section>
</div>
    <div class="postbit" id="164541" data-post-id="164541">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="achempion" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/achempion/120/21179_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  achempion
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>You can call external tool to extract image size for you, like</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">identify -format '%wx%h' img.png 
# =&gt; 100x200
</code></pre>
<p>You can call it with <code>System.cmd/3</code> .</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="164541" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ive-forked-arc-to-waffle-and-merged-all-open-prs/25559/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-164541" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="164541"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #22"></div>
  </section>
</div>
    <div class="postbit" id="164402" data-post-id="164402">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Exadra37" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Exadra37/120/9183_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Exadra37
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="achempion" data-post="16" data-topic="25559">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/achempion/48/21179_2.png" class="avatar"> achempion:</div>
<blockquote>
<p>For now I want to focus and sort out outdated dependencies and implement proper file validations based on content rather than extension.</p>
</blockquote>
</aside>
<p>Wow… validating files uploads by extension, that’s really asking for trouble!</p>
<p>Glad you are fixing it, but this really leaves me concerned about the security approach taken on this library. Are their more unsafe approaches in the file upload process needing to be fixed?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="164402" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ive-forked-arc-to-waffle-and-merged-all-open-prs/25559/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-164402" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="164402"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #21"></div>
  </section>
</div>
    <div class="postbit" id="164398" data-post-id="164398">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="smolcatgirl" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  smolcatgirl
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi,<br>
I like the library, good work. Is there any way to check if a image attachment has larger or equal  resolution than 120x120?<br>
Thanks</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="164398" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ive-forked-arc-to-waffle-and-merged-all-open-prs/25559/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-164398" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="164398"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/25559/load_more?page=4">Load more posts (18 remaining)</a>
</div></template></turbo-stream>