[
https://issues.apache.org/jira/browse/FILEUPLOAD-143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12519500
]
Luke Scott commented on FILEUPLOAD-143:
---------------------------------------
I'm fairly sure I figured out what's causing this. It turns out Flash 8 (not
sure about 9) doesn't properly terminate the final boundary. The final boundary
should end with a "--", but it doesn't. Because of this, commons-fileupload is
throwing an exception.
Other interfaces like PHP catch the error, but allows the file to be uploaded
anyway. Somehow commons-fileupload needs to do the same thing.
Here are the headers, minus the data for obvious reasons:
POST /index.html HTTP/1.1
Connection: close
User-Agent: Macromedia Flash Player 8
X-Flash-Version: 8,0,22,0
Accept-Types: text/*
Content-Type: multipart/form-data;
boundary=----------gL6Ij5ei4gL6Ef1GI3gL6gL6KM7cH2
Content-Length: 35122482
Host: localhost:4242
------------gL6Ij5ei4gL6Ef1GI3gL6gL6KM7cH2
Content-Disposition: form-data; name="Filename"
arewethereyet.mov
------------gL6Ij5ei4gL6Ef1GI3gL6gL6KM7cH2
Content-Disposition: form-data; name="Filedata"; filename="arewethereyet.mov"
Content-Type: application/octet-stream
...DATA HERE...
------------gL6Ij5ei4gL6Ef1GI3gL6gL6KM7cH2
Content-Disposition: form-data; name="Upload"
Submit Query
------------gL6Ij5ei4gL6Ef1GI3gL6gL6KM7cH2
> "Stream ended unexpectedly"
> ---------------------------
>
> Key: FILEUPLOAD-143
> URL: https://issues.apache.org/jira/browse/FILEUPLOAD-143
> Project: Commons FileUpload
> Issue Type: Bug
> Affects Versions: 1.2
> Environment: CentOS 4.4, Jetty running through Red5 (form of Flash
> Media Server), code under JSP
> Reporter: Luke Scott
>
> I setup an upload script under a JSP. I tested it by uploading a file via
> html form upload and it worked fine - the file was received.
> But when I tried uploading the file through a flash interface using the
> FileReference object I got a 500 error response. Flash's FileReference API
> was very vague, and I was unable to reproduce the error under another
> interface so I could see the error.... But I finnally did get something back
> by writing a catch and writing the error to a file. I don't know if this is
> accurate or not:
> "Stream ended unexpectedly"
> I do know that the error occurs when this line is ran:
> List items = upload.parseRequest(request);
> And here is some relevant code, but not all of it: (to show that I do have a
> factory set):
> DiskFileItemFactory factory = new DiskFileItemFactory();
> factory.setSizeThreshold(524288000);
> ServletFileUpload upload = new ServletFileUpload(factory);
> upload.setSizeMax(524288000);
> List items = upload.parseRequest(request);
> I am fairly sure that flash is doing something that is throwing
> commons-fileupload off. But it does work with apache & php...
> The biggest difference in the headers, or at least the initial headers, is
> flash passes a "connection: close" header.
> When searching I came up with some vague answers. This page shows some
> comments at the bottom by users with similar problems:
> http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00002225.html
> One guy posts a solution to fix the problem, but it seems like it is severely
> out of date because where it says "return items;" I do not see items declared
> in the function of the line he mentions. Plus he mentions line 336, and it's
> now on 800 something. Tried his suggestion but instead returned "true" and
> "false" (tried both ways) but it didn't work... Also when I tried his catch
> line ant said it was invalid, so I had to put "Exception e" instead. You may
> notice that his post is in all caps (posts after his appear to be for some
> reason). I did make sure to use the proper case (i do know of case
> sensitivity).
> With further reading I read instances where flash did a "test upload" without
> sending the file. In other cases I read something about it not sending to
> blank lines after the header. Not sure what my current problem is.... I'm
> sure once the problem is found, it should be fairly trivial to fix (i hope).
> Even though it may be flash's fault, it works in PHP and other instances...
> So it should work here :)
> Thanks in advance,
> -Luke
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.