Skip to content

Uploaded PNG image always have application/octet-stream content type #18

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
php-coder opened this issue Feb 28, 2019 · 3 comments
Closed

Comments

@php-coder
Copy link
Contributor

php-coder commented Feb 28, 2019

During upgrade to a newer version of htmlunit, my tests have started to fail because uploaded image (test.png) now has incorrect application/octet-stream content type. It looks like image/png type isn't supported by any browser:

// default file upload mime types
CHROME.registerUploadMimeType("html", MimeType.TEXT_HTML);
CHROME.registerUploadMimeType("htm", MimeType.TEXT_HTML);
CHROME.registerUploadMimeType("css", MimeType.TEXT_CSS);
CHROME.registerUploadMimeType("xml", MimeType.TEXT_XML);
CHROME.registerUploadMimeType("gif", "image/gif");
CHROME.registerUploadMimeType("jpeg", "image/jpeg");
CHROME.registerUploadMimeType("jpg", "image/jpeg");
CHROME.registerUploadMimeType("webp", "image/webp");
CHROME.registerUploadMimeType("mp4", "video/mp4");
CHROME.registerUploadMimeType("m4v", "video/mp4");
CHROME.registerUploadMimeType("m4a", "audio/x-m4a");
CHROME.registerUploadMimeType("mp3", "audio/mp3");
CHROME.registerUploadMimeType("ogv", "video/ogg");
CHROME.registerUploadMimeType("ogm", "video/ogg");
CHROME.registerUploadMimeType("ogg", "audio/ogg");
CHROME.registerUploadMimeType("oga", "audio/ogg");
CHROME.registerUploadMimeType("opus", "audio/ogg");
CHROME.registerUploadMimeType("webm", "video/webm");
CHROME.registerUploadMimeType("wav", "audio/wav");
CHROME.registerUploadMimeType("flac", "audio/flac");
CHROME.registerUploadMimeType("xhtml", "application/xhtml+xml");
CHROME.registerUploadMimeType("xht", "application/xhtml+xml");
CHROME.registerUploadMimeType("xhtm", "application/xhtml+xml");
CHROME.registerUploadMimeType("txt", "text/plain");
CHROME.registerUploadMimeType("text", "text/plain");
FIREFOX_60.registerUploadMimeType("html", MimeType.TEXT_HTML);
FIREFOX_60.registerUploadMimeType("htm", MimeType.TEXT_HTML);
FIREFOX_60.registerUploadMimeType("css", MimeType.TEXT_CSS);
FIREFOX_60.registerUploadMimeType("xml", MimeType.TEXT_XML);
FIREFOX_60.registerUploadMimeType("gif", "image/gif");
FIREFOX_60.registerUploadMimeType("jpeg", "image/jpeg");
FIREFOX_60.registerUploadMimeType("jpg", "image/jpeg");
FIREFOX_60.registerUploadMimeType("mp4", "video/mp4");
FIREFOX_60.registerUploadMimeType("m4v", "video/mp4");
FIREFOX_60.registerUploadMimeType("m4a", "audio/mp4");
FIREFOX_60.registerUploadMimeType("mp3", "audio/mpeg");
FIREFOX_60.registerUploadMimeType("ogv", "video/ogg");
FIREFOX_60.registerUploadMimeType("ogm", "video/x-ogm");
FIREFOX_60.registerUploadMimeType("ogg", "video/ogg");
FIREFOX_60.registerUploadMimeType("oga", "audio/ogg");
FIREFOX_60.registerUploadMimeType("opus", "audio/ogg");
FIREFOX_60.registerUploadMimeType("webm", "video/webm");
FIREFOX_60.registerUploadMimeType("wav", "audio/wav");
FIREFOX_60.registerUploadMimeType("xhtml", "application/xhtml+xml");
FIREFOX_60.registerUploadMimeType("xht", "application/xhtml+xml");
FIREFOX_60.registerUploadMimeType("txt", "text/plain");
FIREFOX_60.registerUploadMimeType("text", "text/plain");
FIREFOX_52.registerUploadMimeType("html", MimeType.TEXT_HTML);
FIREFOX_52.registerUploadMimeType("htm", MimeType.TEXT_HTML);
FIREFOX_52.registerUploadMimeType("css", MimeType.TEXT_CSS);
FIREFOX_52.registerUploadMimeType("xml", MimeType.TEXT_XML);
FIREFOX_52.registerUploadMimeType("gif", "image/gif");
FIREFOX_52.registerUploadMimeType("jpeg", "image/jpeg");
FIREFOX_52.registerUploadMimeType("jpg", "image/jpeg");
FIREFOX_52.registerUploadMimeType("mp4", "video/mp4");
FIREFOX_52.registerUploadMimeType("m4v", "video/mp4");
FIREFOX_52.registerUploadMimeType("m4a", "audio/mp4");
FIREFOX_52.registerUploadMimeType("mp3", "audio/mpeg");
FIREFOX_52.registerUploadMimeType("ogv", "video/ogg");
FIREFOX_52.registerUploadMimeType("ogm", "video/x-ogm");
FIREFOX_52.registerUploadMimeType("ogg", "video/ogg");
FIREFOX_52.registerUploadMimeType("oga", "audio/ogg");
FIREFOX_52.registerUploadMimeType("opus", "audio/ogg");
FIREFOX_52.registerUploadMimeType("webm", "video/webm");
FIREFOX_52.registerUploadMimeType("wav", "audio/wav");
FIREFOX_52.registerUploadMimeType("xhtml", "application/xhtml+xml");
FIREFOX_52.registerUploadMimeType("xht", "application/xhtml+xml");
FIREFOX_52.registerUploadMimeType("txt", "text/plain");
FIREFOX_52.registerUploadMimeType("text", "text/plain");
INTERNET_EXPLORER.registerUploadMimeType("html", MimeType.TEXT_HTML);
INTERNET_EXPLORER.registerUploadMimeType("htm", MimeType.TEXT_HTML);
INTERNET_EXPLORER.registerUploadMimeType("css", MimeType.TEXT_CSS);
INTERNET_EXPLORER.registerUploadMimeType("xml", MimeType.TEXT_XML);
INTERNET_EXPLORER.registerUploadMimeType("gif", "image/gif");
INTERNET_EXPLORER.registerUploadMimeType("jpeg", "image/jpeg");
INTERNET_EXPLORER.registerUploadMimeType("jpg", "image/jpeg");
INTERNET_EXPLORER.registerUploadMimeType("mp4", "video/mp4");
INTERNET_EXPLORER.registerUploadMimeType("m4v", "video/mp4");
INTERNET_EXPLORER.registerUploadMimeType("m4a", "audio/mp4");
INTERNET_EXPLORER.registerUploadMimeType("mp3", "audio/mpeg");
INTERNET_EXPLORER.registerUploadMimeType("ogm", "video/x-ogm");
INTERNET_EXPLORER.registerUploadMimeType("ogg", "application/ogg");
INTERNET_EXPLORER.registerUploadMimeType("wav", "audio/wav");
INTERNET_EXPLORER.registerUploadMimeType("xhtml", "application/xhtml+xml");
INTERNET_EXPLORER.registerUploadMimeType("xht", "application/xhtml+xml");
INTERNET_EXPLORER.registerUploadMimeType("txt", "text/plain");

Could you confirm that it's indeed a bug?
Do you see what workaround could be applied in this case (except renaming a file to test.jpg)?

@rbri
Copy link
Member

rbri commented Mar 1, 2019

Yes you are right, i think this is a bug. Fix is on the way, you can use the next snapshot build if you like.

Because the list of upload mime types depends for real browsers on the operation system and the installed applications at the client side, you are already able to add more mime types (e.g. if you like to simulate a client where MS Office is installed).

Simply call
CHROME.registerUploadMimeType("png", "image/png");
or
FF60.registerUploadMimeType("png", "image/png");
or
....
before creating the WebClient with the browser.

Hope that helps.
Thanks for the report and for using HtmlUnit.

@rbri rbri closed this as completed Mar 1, 2019
@php-coder
Copy link
Contributor Author

php-coder commented Mar 1, 2019

Thanks for the fix!

BTW it's possible to close the issues with a special comment on the commits -- https://help.github.com/en/articles/closing-issues-using-keywords This way they will be connected and it becomes possible to jump from one to another in UI. JFYI.

@rbri
Copy link
Member

rbri commented Mar 1, 2019

Yep, good point - i simply forgot that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants