javascript - 从 Android native 浏览器上传时文件类型为空字符串

标签 javascript android jquery file-upload

我在网页上有一个 input(type="file")

<input type='file' name="file" accept="image/*" />

我使用 jQuery 像这样抓取文件:

$('input').on('change', function(e) {
    console.log(e.target.files[0]);
});

我需要检查 e.target.files[0].type 是否匹配 "image.*" 模式,所以我这样做: var matches = e.target.files[0].type.match('image.*');

这在大多数情况下都可以正常工作,但是当应用程序从 Android native 浏览器运行时,e.target.files[0].type 为空字符串。如果我选择存储在设备上的图像,就会发生这种情况。如果我用相机拍摄图像 e.target.files[0].type"image/jpeg"

有没有人遇到过这个问题?

最佳答案

因为我已经添加了评论,所以我尝试使用以下代码 fragment 制作用例:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8" />
  <title>Image Test</title>
</head>

<body>
  <form method="POST" enctype="multipart/form-data">
    <input type="file" accept="image/*" onchange="previewAndUploadFile(event)"/><br/>
    <img id="imagePreview" width="200" height="200"/>
    <div id="imageType"></div>
  </form>
  <script type="text/javascript">
    function previewAndUploadFile(event) {
        var type = document.getElementById("imageType");
        var file = event.target.files[0];
        try {
            var reader = new FileReader()
            reader.onload = function() {
                var preview = document.getElementById("imagePreview");
                preview.src = reader.result;
            }
            reader.readAsDataURL(file);
            type.innerHTML = file.type;
        } catch(e){
            type.innerHTML = "Invalid image.";
        }
    }
  </script>
</body>
</html>
  1. 当文件名为 sample.jpeg 且图像为有效图像时,一切正常。结果是 image/jpeg

  2. 当文件名为sample(去掉文件扩展名但图片内容仍然有效)时,结果为空字符串。

  3. 当图像损坏(通过在记事本中编辑它,您可以尝试其他方式)并且文件名为 sample.jpeg 时,图像类型仍为 image/jpeg.

  4. 重复 case-3,图像重命名为 sample,图像类型再次为空字符串。

可能您的情况就是其中之一。

关于javascript - 从 Android native 浏览器上传时文件类型为空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25874438/

相关文章:

javascript - 悬停时的 Jquery 图像 alt

javascript - 开始使用 JQuery 下载文件

javascript - 在 Phonegap/Cordova 中使用 Instagram API

javascript - 对数组内容求和并分配给另一个数组

android - 是否有用于在iPhone或Android上呈现UI原型(prototype)的应用程序?

android - 如何在不重启的情况下刷新 Android Studio 中的资源?

javascript - meteor 在哪里放置全局tracker.autorun

java - Android Studio 无法正确显示 xml 文件

jquery - 向后工作

Javascript实例变量语法(AJAX页面刷新)