ti8m / DocumentHandler

A phonegap plugin to handle documents (f.e. PDFs) loaded from a URL.
MIT License
30 stars 70 forks source link

Doesn't work for Uppercase extension on android #15

Open chrwhm opened 9 years ago

chrwhm commented 9 years ago

Hi there,

The problem: Androids MimeTypeMap.getFileExtensionFromUrl() could not handle uppercase file extensions, so that downloading of "test.PDF" throws an error while "test.pdf" works.

Solution: Convert filename to lowercase in src/android/DocumentHandler.java in lines 76 & 114.

@@ -75,7 +75,8 @@ public class DocumentHandler extends CordovaPlugin {

                        InputStream reader = conn.getInputStream();

-                       String extension = MimeTypeMap.getFileExtensionFromUrl(url);
+                       String lowercaseUrl = url.toString().toLowerCase();
+                       String extension = MimeTypeMap.getFileExtensionFromUrl(lowercaseUrl);
                        File f = File.createTempFile(FILE_PREFIX, "." + extension,
                                        null);
                        // make sure the receiving app can read this file
@@ -108,7 +109,8 @@ public class DocumentHandler extends CordovaPlugin {
        private static String getMimeType(String url) {
                String mimeType = null;

-               String extension = MimeTypeMap.getFileExtensionFromUrl(url);
+                String lowercaseUrl = url.toString().toLowerCase();
+               String extension = MimeTypeMap.getFileExtensionFromUrl(lowercaseUrl);
                if (extension != null) {
                        MimeTypeMap mime = MimeTypeMap.getSingleton();
                        mimeType = mime.getMimeTypeFromExtension(extension);
ShivamPokhriyal commented 3 years ago

Just an FYI that the MimeTypeMap.getFileExtensionFromUrl() handles uppercase since oreo. Here is the change https://android.googlesource.com/platform/libcore.git/+/eec769da1a170d0c0431fd92accd8976f104502a%5E%21/luni/src/main/java/libcore/net/MimeUtils.java