<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<font face="Georgia">sounds like the sliced and non-sliced versions
are posting in somewhat different ways.<br>
<br>
does the sample code below work ok if the data is less than
BYTES_PER_CHUNK? IOW, is the code ok for a single chunk POST, but
failing for multiple chunks? <br>
<br>
What does the receiving code look like? Is it different for the
sliced and non-sliced versions?<br>
<br>
</font>Can you say more about what "return an error" is? Is there a
debugger stack you could include?<br>
<br>
<br>
<div class="moz-cite-prefix">On 3/19/15 9:31 PM, Sebastien Audier
wrote:<br>
</div>
<blockquote
cite="mid:CAACGQv2d0fvN9krs_di+ACSBfkJ7g=_PfjjWN-ZOS3qv3FUVRA@mail.gmail.com"
type="cite">
<div dir="ltr">Hi Bob, <span
style="color:rgb(55,62,77);font-family:Helvetica,Arial,'lucida
grande',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'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't recover the WAFile,
because: <br>
<br>
self requestContext -> return an error. </div>
<div><br>
</div>
<div>What'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"><<a moz-do-not-send="true"
href="mailto:arning315@comcast.net" target="_blank">arning315@comcast.net</a>></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"><<a
moz-do-not-send="true"
href="mailto:sebastien.audier@gmail.com"
target="_blank">sebastien.audier@gmail.com</a>></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't really use
WASession. <span><br>
<br>
On javascript layer, I cut the file
with this function:<br>
<br>
<pre style="font-family:'Source Code Pro',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)">'input[type="file"]'</span><span>).</span><span>addEventListener</span><span>(</span><span style="color:rgb(101,176,66)">'change'</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 moz-do-not-send="true" 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><</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:'Source Code Pro',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)">'POST'</span><span>,</span><span> '/myPath'</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't have access
to the requestContext in order to
get the WAFile in request. </span></div>
<div><span>If I don'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't
ordored ?</div>
<div><span><br>
</span></div>
<div>Any help ?<br>
<br>
Thank'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 moz-do-not-send="true"
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 moz-do-not-send="true"
href="http://www.objectfusion.fr/"
target="_blank"><br>
</a></div>
</div>
</div>
</div>
<br>
<fieldset></fieldset>
<br>
</div>
</div>
<pre>_______________________________________________
seaside mailing list
<a moz-do-not-send="true" href="mailto:seaside@lists.squeakfoundation.org" target="_blank">seaside@lists.squeakfoundation.org</a>
<a moz-do-not-send="true" 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 moz-do-not-send="true"
href="mailto:seaside@lists.squeakfoundation.org">seaside@lists.squeakfoundation.org</a><br>
<a moz-do-not-send="true"
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 moz-do-not-send="true"
href="http://www.objectfusion.fr/" target="_blank"><br>
</a></div>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
seaside mailing list
<a class="moz-txt-link-abbreviated" href="mailto:seaside@lists.squeakfoundation.org">seaside@lists.squeakfoundation.org</a>
<a class="moz-txt-link-freetext" href="http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside">http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside</a>
</pre>
</blockquote>
<br>
</body>
</html>