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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="shahryarjb" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/shahryarjb/120/39485_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  shahryarjb
                    <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">
								<aside class="quote no-group" data-username="wolfiton" data-post="10" data-topic="23681">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wolfiton/48/15884_2.png" class="avatar"> wolfiton:</div>
<blockquote>
<p>Do you have a controller? or are you just trying to use static files?</p>
</blockquote>
</aside>
<p>I just have static files like <code>png</code> , <code>mp4</code> and <code>pdf</code> format, I don’t know why Phoenix has no good doc for it, just can find this link</p><aside class="onebox allowlistedgeneric" data-onebox-src="https://9elements.com/blog/streaming-downloads-in-elixir-a-protocol-love-story/">
  <header class="source">
      <img src="https://9elements.com/assets/images/meta/favicon.svg" class="site-icon" alt="" width="64" height="64">

      <a href="https://9elements.com/blog/streaming-downloads-in-elixir-a-protocol-love-story/" target="_blank" rel="noopener nofollow ugc">9elements</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:690/362;"><img src="https://9elements.com/assets/images/meta/social-share.png" class="thumbnail" alt="" width="690" height="362"></div>

<h3><a href="https://9elements.com/blog/streaming-downloads-in-elixir-a-protocol-love-story/" target="_blank" rel="noopener nofollow ugc">Streaming downloads in Elixir: a protocol love story - 9elements</a></h3>

  <p>Combining finest craftsmanship with elegant design to ship innovative digital experiences.</p>


  </article>

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

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

<p>it can’t help me what to do!</p>
<p>I tested, but I can’t use it. I tried to find sample code <img src="https://forum.elixirforum.com/images/emoji/apple/frowning.png?v=15" title=":frowning:" class="emoji" alt=":frowning:" loading="lazy" width="20" height="20"></p>
<p>please see this cod:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  def download(conn, _params) do
    file = File.stream!("/Users/shahryar/Desktop/Khat-Ghalam.png", [], 204800)

    file |&gt; Enum.with_index |&gt; Enum.each(fn {content, _index} -&gt;
      conn
       |&gt; put_resp_content_type("image/png")
       |&gt; put_resp_header("Content-disposition","attachment; filename=\"test.png\"")
       |&gt; put_resp_header("X-Accel-Redirect", "/tempfile/download/test.png")
       |&gt; put_resp_header("Content-Type", "application/octet-stream")
       |&gt; send_resp(200, content)
       # |&gt; send_chunked(200)

    end)
  end
</code></pre>
<p>it works and the png file is healthy, but I don’t know <strong>Is it streams?</strong> I couldn’t use <code>send_chunked(200)</code></p>
<pre data-code-wrap="elixir"><code class="lang-elixir">HTTP/1.1 200 OK

Content-Type: image/png; charset=utf-8
Content-Disposition: attachment; filename="test.png"
x-xss-protection: 1; mode=block
Server: Cowboy
x-download-options: noopen
x-permitted-cross-domain-policies: none
Cache-Control: max-age=0, private, must-revalidate
cross-origin-window-policy: deny
Date: Fri, 05 Jul 2019 13:45:41 GMT
Content-Length: 10097
x-request-id: Fa6Gzp-CHY1D3jIAAHID
X-Accel-Redirect: /tempfile/download/test.png
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
</code></pre>
<h3><a name="p-135010-it-works-but-i-have-this-error-in-my-terminal-1" class="anchor" href="#p-135010-it-works-but-i-have-this-error-in-my-terminal-1" aria-label="Heading link" rel="nofollow"></a>it works but I have this error in my terminal:</h3>
<pre data-code-wrap="elixir"><code class="lang-elixir">[error] #PID&lt;0.2222.0&gt; running KhatoghalamWeb.Endpoint (connection #PID&lt;0.2220.0&gt;, stream id 1) terminated
Server: localhost:4000 (http)
Request: GET /download
** (exit) an exception was raised:
    ** (RuntimeError) expected action/2 to return a Plug.Conn, all plugs must receive a connection (conn) and return a connection, got: :ok
        (khatoghalam) lib/khatoghalam_web/controllers/client_home_controller.ex:1: KhatoghalamWeb.ClientHomeController.phoenix_controller_pipeline/2
        (phoenix) lib/phoenix/router.ex:280: Phoenix.Router.__call__/2
        (khatoghalam) lib/khatoghalam_web/endpoint.ex:1: KhatoghalamWeb.Endpoint.plug_builder_call/2
        (khatoghalam) lib/plug/debugger.ex:122: KhatoghalamWeb.Endpoint."call (overridable 3)"/2
        (khatoghalam) lib/khatoghalam_web/endpoint.ex:1: KhatoghalamWeb.Endpoint.call/2
        (phoenix) lib/phoenix/endpoint/cowboy2_handler.ex:33: Phoenix.Endpoint.Cowboy2Handler.init/2
        (cowboy) /Applications/MAMP/htdocs/elixir-ex-source/khatoghalam/khatoghalam/deps/cowboy/src/cowboy_handler.erl:41: :cowboy_handler.execute/2
        (cowboy) /Applications/MAMP/htdocs/elixir-ex-source/khatoghalam/khatoghalam/deps/cowboy/src/cowboy_stream_h.erl:296: :cowboy_stream_h.execute/3
        (cowboy) /Applications/MAMP/htdocs/elixir-ex-source/khatoghalam/khatoghalam/deps/cowboy/src/cowboy_stream_h.erl:274: :cowboy_stream_h.request_process/3
        (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
</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="135010" 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/downloading-with-user-token/23681/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-135010" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="135010"
                     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 #11"></div>
  </section>
</div>
    <div class="postbit" id="135012" data-post-id="135012">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Here you can find a complete example of a working streaming app <a href="https://forum.elixirforum.com/t/very-high-memory-usage-when-streaming-file-with-phoenix/23455" class="inline-onebox" rel="nofollow">Very high memory usage when streaming file with Phoenix</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="135012" data-batch-url="/posts/batch_likers">
                        1
                      </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/downloading-with-user-token/23681/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-135012" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="135012"
                     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 #12"></div>
  </section>
</div>
    <div class="postbit" id="135020" data-post-id="135020">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="shahryarjb" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/shahryarjb/120/39485_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  shahryarjb
                    <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>this is not chunk file, it loads a file with url and load it and uses a module named <code>HttpStream</code>, I saw this repo <a href="https://github.com/Arquanite/phoenix-streaming-app" class="inline-onebox" rel="noopener nofollow ugc">GitHub - Arquanite/phoenix-streaming-app: This example code shows big memory requirements of the application :( · GitHub</a>. they didn’t chunk file to what size they need like custom size</p>
<p>I sent file to google drive like this</p>
<pre data-code-wrap="elixir"><code class="lang-elixir"> File.stream!(filepaths, [], chunk_size) 
                |&gt; Enum.with_index 
                |&gt; Enum.each(fn {content, _index} -&gt;
                        # Process.sleep 2000
                        upload_content_to_google(flag, file_size, session_uri, content, chunk_size, email, file)
                end)
</code></pre>
<p>and sender:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">stat = HTTPoison.put(
        "https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable&amp;upload_id=#{session_uri}", # url
        {:file, file_path} , # body
        [
            # header
            {"Content-Length", "#{rest_chunk_size}"},
            {"Content-Type", "application/tar"},
            {"Content-Range", range}
        ],
        [timeout: 50_000, recv_timeout: 50_000]
        )
</code></pre>
<p>but that is upload. and that link you sent me it downloads on external link and runs with stream module , it doesn’t chunk file to many part with a size</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="135020" 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/downloading-with-user-token/23681/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-135020" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="135020"
                     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 #13"></div>
  </section>
</div>
    <div class="postbit" id="135022" data-post-id="135022">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="shahryarjb" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/shahryarjb/120/39485_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  shahryarjb
                    <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>maybe I can’t chunk my file to many parts and my user downloadsit , maybe the web server (ngnix) does it!!?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="135022" 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/downloading-with-user-token/23681/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-135022" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="135022"
                     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 #14"></div>
  </section>
</div>
    <div class="postbit" id="135026" data-post-id="135026">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>How about opening a new topic to attract more seasoned phoenix members with the following title:</p>
<p><strong>How can I send a chunked file to a user?</strong></p>
<p>Because at this moment i don’t know either.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="135026" data-batch-url="/posts/batch_likers">
                        1
                      </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/downloading-with-user-token/23681/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-135026" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="135026"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>