<div><br></div><div>Hi team,</div><div><br></div><div>I'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: '--'</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'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 "_readBoundaryLine"</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 == "--\r\n":</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 != "\r\n":</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> raise MimeFormatError("Unexpected data on same line as boundary: %r" % (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 [-] <POST /upload (1, 1)> --------</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 = """</span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><html></span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><p>for test</p></span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><form action="/upload" method="post" enctype="multipart/form-data"></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);"><input type="file" name="FileUpload" /></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);"><input type="submit" value="Upload"/></span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"></form></span></div><div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"></html></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);"><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);">"""for test only"""</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, '--------'</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='ok')</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__, ''), </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=['FileUpload'], </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('image', 'jpeg'),</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('image', 'png'),</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('image', 'gif'),</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__, 'FileUpload.swf'))</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("demoserver")</span></div>
<div><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">s = strports.service('tcp:8080', 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);"><?xml version="1.0" encoding="utf-8"?></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);"><!-- <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> --></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);"><mx:Application</span></span><span style="color: #000000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> xmlns:mx="</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);">"</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="</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);">"</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="</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);">"</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="</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);">"</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="init();"</span><span style="color: #0000ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">></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);"><mx:Script></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);"> <![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);">"<a href="http://127.0.0.1:8080/upload">http://127.0.0.1:8080/upload</a>"</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);">""</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);">"size (bytes): "</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);">"FileUpload"</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);">"ERROR: zero-byte file"</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);">" (complete)"</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);"> ]]></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);"></mx:Script></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);"><mx:NumberFormatter</span><span style="color: #000000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> id="</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);">" </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: #0000ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"><mx:Button</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> label="</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);">"</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="browseAndUpload();" </span><span style="color: #0000ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">/></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);"><mx:Label</span></span><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> id="</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);">" </span><span style="color: #0000ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">/></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);"><mx:ProgressBar</span><span style="color: #000000"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);"> id="</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);">"</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="</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);">"</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="</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);">" </span><span style="color: #0000ff"><span class="Apple-style-span" style="background-color: rgb(204, 204, 204);">/></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);"></mx:Application></span></p></div><br clear="all"><br>-- <br>
-----------------------------------------------<br>Yours<br>Faithfully<br><br>Daniel Yang<br>