<div><br></div><div>Hi team,</div><div><br></div><div>I&#39;ve been trying to upload files to twisted.web2 backend(FileSaver) with Adobe Flex and I am always getting IOError.</div><div>(code see below)</div><div>After some sniffing work, I found the error messages returned by twisted.web2:</div>
<div><br></div><div><span class="Apple-style-span" style="font-family: verdana, sans-serif; font-size: 14px; line-height: 21px; "><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">Unexpected data on same line as boundary: &#39;--&#39;</span></span></div>
<div><br></div><div>I believe this flex app works with php backend. So this might be with twisted.web2 or flash player&#39;s malformed post data.</div><div><br></div><div>It seems the twisted error comes from fileupload.py:</div>
<div>(I added 2 prints)</div><div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">    def _readBoundaryLine(self):</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        print &quot;_readBoundaryLine&quot;</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        line = self.stream.readline(size=1024)</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        if isinstance(line, defer.Deferred):</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            line = defer.waitForDeferred(line)</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            yield line</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            line = line.getResult()</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        print line</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        if line == &quot;--\r\n&quot;:</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            # THE END!</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            yield False</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            return</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        elif line != &quot;\r\n&quot;:</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            raise MimeFormatError(&quot;Unexpected data on same line as boundary: %r&quot; % (line,))</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        yield True</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        return</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">    _readBoundaryLine = defer.deferredGenerator(_readBoundaryLine)</span></div></div><div><br></div><div>with html uploading form, it outputs:</div>
<div><br></div><div><div>2009-08-20 23:06:08+0800 [-] _readBoundaryLine</div><div>2009-08-20 23:06:08+0800 [-] --</div><div>2009-08-20 23:06:08+0800 [-] </div><div>2009-08-20 23:06:08+0800 [-] &lt;POST /upload (1, 1)&gt; --------</div>
<div>2009-08-20 23:06:08+0800 [-] FileUpload</div><div><br></div><div><br></div><div>but with flex uploading:</div><div><br></div><div><div>2009-08-20 23:06:27+0800 [-] _readBoundaryLine</div><div>2009-08-20 23:06:27+0800 [-] </div>
<div>2009-08-20 23:06:27+0800 [-] </div><div>2009-08-20 23:06:27+0800 [-] _readBoundaryLine</div><div>2009-08-20 23:06:27+0800 [-] </div><div>2009-08-20 23:06:27+0800 [-] </div><div>2009-08-20 23:06:27+0800 [-] _readBoundaryLine</div>
<div>2009-08-20 23:06:27+0800 [-] --</div><div><br></div></div><div><br></div></div><div>Same file, different posted data.</div><div><br></div><div>Any ideas?</div><div><br></div><div>Does this happen to be a bug, or is there any way to walk around this?</div>
<div><br></div><div><br></div><div>My testing code:</div><div><br></div><div>python code:</div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><br></span></div><div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">from twisted.web2 import http_headers, resource, \</span></div>
<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">static, server, channel, http, responsecode</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">from twisted.python import util</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><br></span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">FORMHTML = &quot;&quot;&quot;</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;html&gt;</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;p&gt;for test&lt;/p&gt;</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;form action=&quot;/upload&quot; method=&quot;post&quot; enctype=&quot;multipart/form-data&quot;&gt;</span></div>
<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;input type=&quot;file&quot; name=&quot;FileUpload&quot; /&gt;</span></div>
<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;input type=&quot;submit&quot; value=&quot;Upload&quot;/&gt;</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;/form&gt;</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;/html&gt;</span></div><div>
<span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot;&quot;&quot;</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><br></span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">class MyFileSaver(static.FileSaver):</span></div>
<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot;&quot;&quot;for test only&quot;&quot;&quot;</span></div>
<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">def render(self, req):</span></div>
<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">print req, &#39;--------&#39;</span></div>
<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">if req.files:</span></div>
<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                        </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">for fieldName in req.files:</span></div>
<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                                </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">print fieldName</span></div>
<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> </span></div>
<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">return http.Response(responsecode.OK, {}, stream=&#39;ok&#39;)</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><br></span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><br></span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">class Toplevel(resource.Resource):</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">  addSlash = True</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">  def render(self, ctx):</span></div>
<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">return http.Response(stream=FORMHTML)</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">  </span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">  child_upload = MyFileSaver(util.sibpath(__file__, &#39;&#39;), </span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">  </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">expectedFields=[&#39;FileUpload&#39;], </span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">  </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">allowedTypes=(</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">  </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                        </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">http_headers.MimeType(&#39;image&#39;, &#39;jpeg&#39;),</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">  </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                        </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">http_headers.MimeType(&#39;image&#39;, &#39;png&#39;),</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">  </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                        </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">http_headers.MimeType(&#39;image&#39;, &#39;gif&#39;),</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">  </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">)</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">  </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">)</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">  child_swf = static.File(util.sibpath(__file__, &#39;FileUpload.swf&#39;))</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">site = server.Site(Toplevel())</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><br></span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"># Standard twisted application Boilerplate</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">from twisted.application import service, strports</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">application = service.Application(&quot;demoserver&quot;)</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">s = strports.service(&#39;tcp:8080&#39;, channel.HTTPFactory(site))</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">s.setServiceParent(application)</span></div>
</div><div><br></div><div><br></div><div>My flex code:</div><div><br></div><div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #800000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;!-- <a href="http://blog.flexexamples.com/2007/09/21/uploading-files-in-flex-using-the-filereference-class/">http://blog.flexexamples.com/2007/09/21/uploading-files-in-flex-using-the-filereference-class/</a> --&gt;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #990000"><span style="color: #0000ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;mx:Application</span></span><span style="color: #000000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> xmlns:mx=&quot;</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><a href="http://www.adobe.com/2006/mxml">http://www.adobe.com/2006/mxml</a></span><span style="color: #000000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot;</span></span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        layout=&quot;</span><span style="color: #990000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">vertical</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        verticalAlign=&quot;</span><span style="color: #990000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">middle</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        backgroundColor=&quot;</span><span style="color: #990000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">white</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        creationComplete=&quot;init();&quot;</span><span style="color: #0000ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&gt;</span></span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><br></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #006633"><span style="color: #000000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">    </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;mx:Script&gt;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        &lt;![CDATA[</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            </span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">private</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> </span><span style="color: #6699cc"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">var</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> fileRef:FileReference;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><br></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            </span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">private</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> </span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">const</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> FILE_UPLOAD_URL:String = </span><span style="color: #990000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot;<a href="http://127.0.0.1:8080/upload">http://127.0.0.1:8080/upload</a>&quot;</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><br></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            </span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">private</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> </span><span style="color: #339966"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">function</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> init():</span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">void</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> {</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                fileRef = </span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">new</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> FileReference();</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                fileRef.addEventListener(Event.SELECT, fileRef_select);</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                fileRef.addEventListener(ProgressEvent.PROGRESS, fileRef_progress);</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                fileRef.addEventListener(Event.COMPLETE, fileRef_complete);</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                fileRef.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSec);</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            }</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><br></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            </span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">private</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> </span><span style="color: #339966"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">function</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> browseAndUpload():</span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">void</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> {</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                fileRef.browse();</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                message.text = </span><span style="color: #990000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot;&quot;</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            }</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            </span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">private</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> </span><span style="color: #339966"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">function</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> ioErrorHandler(event:IOErrorEvent):</span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">void</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> {</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        </span></span><span style="color: #cc6666"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">trace</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">(event);</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            }</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            </span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">private</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> </span><span style="color: #339966"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">function</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> onSec(event:SecurityErrorEvent):</span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">void</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">{</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        </span></span><span style="color: #cc6666"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">trace</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">(event);</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            }</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><br></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            </span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">private</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> </span><span style="color: #339966"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">function</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> fileRef_select(evt:Event):</span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">void</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> {</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                </span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">try</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> {</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                    message.text = </span><span style="color: #990000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot;size (bytes): &quot;</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> + numberFormatter.format(fileRef.size);</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                    </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                    </span><span style="color: #6699cc"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">var</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> req:URLRequest = </span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">new</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> URLRequest();</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                    req.url = FILE_UPLOAD_URL;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                    req.method = URLRequestMethod.POST;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                    </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                    fileRef.upload(req, </span><span style="color: #990000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot;FileUpload&quot;</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">);</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                } </span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">catch</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> (err:Error) {</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                    message.text = </span><span style="color: #990000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot;ERROR: zero-byte file&quot;</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                }</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            }</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><br></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            </span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">private</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> </span><span style="color: #339966"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">function</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> fileRef_progress(evt:ProgressEvent):</span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">void</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> {</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                progressBar.visible = </span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">true</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            }</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><br></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            </span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">private</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> </span><span style="color: #339966"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">function</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> fileRef_complete(evt:Event):</span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">void</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> {</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                message.text += </span><span style="color: #990000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot; (complete)&quot;</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">                progressBar.visible = </span><span style="color: #0033ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">false</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            }</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">        ]]&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #006633"><span style="color: #000000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">    </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;/mx:Script&gt;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><br></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #0000ff"><span style="color: #000000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">    </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;mx:NumberFormatter</span><span style="color: #000000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> id=&quot;</span></span><span style="color: #990000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">numberFormatter</span></span><span style="color: #000000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot; </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">/&gt;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><br></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">    </span><span style="color: #0000ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;mx:Button</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> label=&quot;</span><span style="color: #990000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">Upload file</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            click=&quot;browseAndUpload();&quot; </span><span style="color: #0000ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">/&gt;</span></span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">    </span><span style="color: #0000ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;mx:Label</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> id=&quot;</span><span style="color: #990000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">message</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot; </span><span style="color: #0000ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">/&gt;</span></span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #0000ff"><span style="color: #000000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">    </span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;mx:ProgressBar</span><span style="color: #000000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> id=&quot;</span></span><span style="color: #990000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">progressBar</span></span><span style="color: #000000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot;</span></span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            indeterminate=&quot;</span><span style="color: #990000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">true</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot;</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">            visible=&quot;</span><span style="color: #990000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">false</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&quot; </span><span style="color: #0000ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">/&gt;</span></span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><br></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #0000ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">&lt;/mx:Application&gt;</span></p></div><br clear="all"><br>-- <br>
-----------------------------------------------<br>Yours<br>Faithfully<br><br>Daniel Yang<br>