<div dir="ltr">Hi Bob, <span style="color:rgb(55,62,77);font-family:Helvetica,Arial,&#39;lucida grande&#39;,tahoma,verdana,arial,sans-serif;font-size:12px;line-height:15.3599996566772px;white-space:pre-wrap;background-color:rgb(246,247,248)">Thanks for your answer.</span><br><br>Right, but before this problem, I failed to recover the file content through the request. <br><br><div>If I don&#39;t slice the file, I can recover a WAFile instance by:</div><div><br>| file |<br>file := self requestContext request postFields values first...<br>And I stream on disk after that.<br><br>If I slice the file on web client, I can&#39;t recover the WAFile, because: <br><br>self requestContext  -&gt; return an error. </div><div><br></div><div>What&#39;s wrong in my process ?<br><br></div><div><br></div><div>Thanks again,</div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-03-19 15:02 GMT-10:00 Bob Arning <span dir="ltr">&lt;<a href="mailto:arning315@comcast.net" target="_blank">arning315@comcast.net</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <font face="Georgia">Not really sure I understand the question, but
      it sounds like you would need to include some sort of position
      information in each POST. That way the receiving end knows where
      in the file to put the data.</font><div><div class="h5"><br>
    <br>
    <div>On 3/19/15 8:42 PM, Sebastien Audier
      wrote:<br>
    </div>
    </div></div><blockquote type="cite"><div><div class="h5">
      <div dir="ltr">Okay, I dropped the idea of cut the file.<br>
        <br>
        One solution (not tested yet):  <span style="font-size:12.8000001907349px">ZnConstants
          maximumEntitySize: 104857600 (100 * 1024 * 1024) in order to
          increase the size of incoming entities to 100 M for example.</span><span style="font-size:12.8000001907349px"><br>
          <br>
          But, if we find one solution for the other case, we could
          upload file faster.</span>
        <div><span style="font-size:12.8000001907349px"><br>
          </span></div>
        <div><span style="font-size:12.8000001907349px">Happy smalltalk
            ;)</span></div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">2015-03-12 15:21 GMT-10:00 Sebastien
          Audier <span dir="ltr">&lt;<a href="mailto:sebastien.audier@gmail.com" target="_blank">sebastien.audier@gmail.com</a>&gt;</span>:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div dir="ltr">
              <div class="gmail_quote"><br>
                <div dir="ltr">Hi all,<br>
                  <br>
                  I work on pharo 2.0 and seaside-REST with ZincServer.<br>
                  <br>
                  I need to rebuild a file which is uploaded by POST
                  requests through Seaside-REST but I don&#39;t really use
                  WASession. <span><br>
                    <br>
                    On javascript layer, I cut the file with this
                    function:<br>
                    <br>
                    <pre style="font-family:&#39;Source Code Pro&#39;,monospace;font-size:15px;white-space:pre-wrap;word-wrap:break-word;color:white;padding:1em;line-height:1.3;border-radius:2px;margin-bottom:2em;background-color:rgb(68,68,68)"><span>document</span><span>.</span><span>querySelector</span><span>(</span><span style="color:rgb(101,176,66)">&#39;input[type=&quot;file&quot;]&#39;</span><span>).</span><span>addEventListener</span><span>(</span><span style="color:rgb(101,176,66)">&#39;change&#39;</span><span>,</span><span> </span><span style="color:rgb(226,137,100)">function</span><span>(</span><span>e</span><span>)</span><span> </span><span>{
</span><span>  var name = <a href="http://this.files.name" target="_blank">this.files.name</a>;
  </span><span style="color:rgb(226,137,100)">var</span><span> blob </span><span>=</span><span> </span><span style="color:rgb(226,137,100)">this</span><span>.</span><span>files</span><span>[</span><span style="color:rgb(51,135,204)">0</span><span>];</span><span>

  </span><span style="color:rgb(226,137,100)">const</span><span> BYTES_PER_CHUNK </span><span>=</span><span> </span><span style="color:rgb(51,135,204)">1024</span><span> </span><span>*</span><span> </span><span style="color:rgb(51,135,204)">1024</span><span>;</span><span> </span><span style="color:rgb(174,174,174);font-style:italic">// 1MB chunk sizes.</span><span>
  </span><span style="color:rgb(226,137,100)">const</span><span> SIZE </span><span>=</span><span> blob</span><span>.</span><span>size</span><span>;</span><span>

  </span><span style="color:rgb(226,137,100)">var</span><span> start </span><span>=</span><span> </span><span style="color:rgb(51,135,204)">0</span><span>;</span><span>
  </span><span style="color:rgb(226,137,100)">var</span><span> </span><span style="color:rgb(226,137,100)">end</span><span> </span><span>=</span><span> BYTES_PER_CHUNK</span><span>;</span><span>

  </span><span style="color:rgb(226,137,100)">while</span><span>(</span><span>start </span><span>&lt;</span><span> SIZE</span><span>)</span><span> </span><span>{</span><span>
    upload</span><span>(name, </span><span>blob</span><span>.</span><span>slice</span><span>(</span><span>start</span><span>,</span><span> </span><span style="color:rgb(226,137,100)">end</span><span>));</span><span>

    start </span><span>=</span><span> </span><span style="color:rgb(226,137,100)">end</span><span>;</span><span>
    </span><span style="color:rgb(226,137,100)">end</span><span> </span><span>=</span><span> start </span><span>+</span><span> BYTES_PER_CHUNK</span><span>;</span><span>
  </span><span>}</span><span>
</span><span>},</span><span> </span><span style="color:rgb(226,137,100)">false</span><span>);</span></pre>
                  </span>And I send datas with this function:
                  <div><br>
                  </div>
                  <div><span>
                      <pre style="font-family:&#39;Source Code Pro&#39;,monospace;font-size:15px;white-space:pre-wrap;word-wrap:break-word;color:white;padding:1em;line-height:1.3;border-radius:2px;margin-bottom:2em;background-color:rgb(68,68,68)"><span style="color:rgb(226,137,100)">function</span><span> upload</span><span>(aFileName</span><span>,</span><span> files</span><span>)</span><span> </span><span>{</span><span>
  </span><span style="color:rgb(226,137,100)">var</span><span> formData </span><span>=</span><span> </span><span style="color:rgb(226,137,100)">new</span><span> </span><b><span style="color:rgb(137,189,255)">FormData</span></b><span>();</span><span>

  </span><span style="color:rgb(226,137,100)">for</span><span> </span><span>(</span><span style="color:rgb(226,137,100)">var</span><span> i </span><span>=</span><span> </span><span style="color:rgb(51,135,204)">0</span><span>,</span><span> file</span><span>;</span><span> file </span><span>=</span><span> files</span><span>[</span><span>i</span><span>];</span><span> </span><span>++</span><span>i</span><span>)</span><span> </span><span>{</span><span>
    </span><b><span>formData</span><span>.</span><span>append</span><span>(aF</span><span>ileN</span><span>ame</span><span>,</span><span> file</span><span>);</span></b><span>
  </span><span>}</span><span>

  </span><span style="color:rgb(226,137,100)">var</span><span> xhr </span><span>=</span><span> </span><span style="color:rgb(226,137,100)">new</span><span> </span><span style="color:rgb(137,189,255)">XMLHttpRequest</span><span>();</span><span>
  xhr</span><span>.</span><span>open</span><span>(</span><span style="color:rgb(101,176,66)">&#39;POST&#39;</span><span>,</span><span> &#39;/myPath&#39;</span><span>,</span><span> </span><span style="color:rgb(226,137,100)">true</span><span>);</span><span>
  xhr</span><span>.</span><span>onload </span><span>=</span><span> </span><span style="color:rgb(226,137,100)">function</span><span>(</span><span>e</span><span>)</span><span> </span><span>{</span><span> </span><span>...</span><span> </span><span>};</span><span>

  xhr</span><span>.</span><span>send</span><span>(</span><b>formData</b><span>);</span><span>  </span><span style="color:rgb(174,174,174);font-style:italic">// multipart/form-data</span><span>
</span><span>}</span></pre>
                      <div><span><br>
                        </span></div>
                    </span>
                    <div><span>I have a POST method on my handler, but I
                        receive multiple requests.<br>
                        On this way, I don&#39;t have access to the
                        requestContext in order to get the WAFile in
                        request. </span></div>
                    <div><span>If I don&#39;t cut the file, it works and I
                        can store on disk. But not in the other case.</span></div>
                    <div><span><br>
                        Of course, my goal is to store the file on disk </span>correctly.<br>
                      <br>
                      So,<br>
                      How to get file content of each request ?<br>
                      How  to rebuild and store the file correctly if
                      the requests aren&#39;t ordored ?</div>
                    <div><span><br>
                      </span></div>
                    <div>Any help ?<br>
                      <br>
                      Thank&#39;s a lot.</div>
                    <span><font color="#888888"><span><font color="#888888">
                            <div><br>
                            </div>
                          </font></span></font></span></div>
                </div>
              </div>
              <span><font color="#888888">
                  <div><br>
                  </div>
                  -- <br>
                  <div>
                    <div dir="ltr">Sébastien AUDIER<br>
                      <div><br>
                        <a href="http://www.objectfusion.fr/" target="_blank"><br>
                        </a></div>
                    </div>
                  </div>
                </font></span></div>
          </blockquote>
        </div>
        <br>
        <br clear="all">
        <div><br>
        </div>
        -- <br>
        <div>
          <div dir="ltr">Sébastien AUDIER<br>
            <div><br>
              <a href="http://www.objectfusion.fr/" target="_blank"><br>
              </a></div>
          </div>
        </div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      </div></div><pre>_______________________________________________
seaside mailing list
<a href="mailto:seaside@lists.squeakfoundation.org" target="_blank">seaside@lists.squeakfoundation.org</a>
<a href="http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside" target="_blank">http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside</a>
</pre>
    </blockquote>
    <br>
  </div>

<br>_______________________________________________<br>
seaside mailing list<br>
<a href="mailto:seaside@lists.squeakfoundation.org">seaside@lists.squeakfoundation.org</a><br>
<a href="http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside" target="_blank">http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Sébastien AUDIER<br><div><br>
<a href="http://www.objectfusion.fr/" target="_blank"><br></a></div></div></div>
</div>