<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 class=""><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 class=""><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 class="HOEnZb"><font color="#888888"><span><font color="#888888"><div><br></div></font></span></font></span></div></div></div><span class="HOEnZb"><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 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>