【问题标题】:Accept ".jpg-large" in HTML5 input element在 HTML5 输入元素中接受“.jpg-large”
【发布时间】:2016-09-29 07:28:36
【问题描述】:

从 Twitter 保存图片时,这些图片有时会在使用 Google Chrome (Chromium Issue 172529) 时以扩展名 .jpg-large 保存。

我想知道在通过input 元素选择图像时是否仍然可以在文件资源管理器中选择这些图像?

我的输入元素是这样的:

<input 
  accept="image/jpeg, image/png, image/bmp, image/gif"
  data-bind="file_select: upload_images" 
  multiple="multiple" 
  type="file"     
/>

我检查了image-large文件的MIME类型,它是image/jpeg

所以浏览器应该能够在文件对话框中显示它,但实际上它是隐藏的:

有没有办法显示这个自定义文件扩展名?

【问题讨论】:

    标签: javascript html twitter jpeg


    【解决方案1】:

    根据HTML Living Standard by WHATWG(不要与 W3C 混淆)accept 属性不限于 MIME 类型——它还可以接受文件扩展名:

    首字符为 U+002E 句号 (.) 的字符串
    表示接受具有指定文件扩展名的文件。

    在你的情况下:

    <input 
      accept="image/jpeg,image/png,image/bmp,image/gif,.jpg-large"
      data-bind="file_select: upload_images" 
      multiple="multiple" 
      type="file"     
    />
    

    我自己使用过它,我可以告诉你所有主流浏览器都支持它,尽管用户界面各不相同(我特别发现 Firefox 的实现更简洁)。

    请注意,操作系统文件选择器通常会按文件扩展名过滤,它不会检查实际文件内容来猜测 MIME 类型——至少在台式计算机上是这样。

    【讨论】:

    • 感谢您的信息。你有在“接受”中使用“文件扩展名”的代码示例吗?
    • 在 Chrome 50 中为我工作。非常感谢!
    【解决方案2】:

    我认为这是不可能的。 specification says that you can only define by MIME type。所以没有办法说例如“*.jpeg-大”。

    理论上,操作系统应该知道文件类型,而不是借助嗅探文件扩展名。

    这就是它在 Android 上的工作方式。与accept="image/*"一起使用时,可以选择使用.jpeg-large保存的文件

    【讨论】:

    猜你喜欢
    • 2012-10-19
    • 2015-03-18
    • 1970-01-01
    • 2012-06-17
    • 2011-01-31
    • 2014-05-12
    • 1970-01-01
    • 2015-05-10
    • 2022-06-28
    相关资源
    最近更新 更多