OS X 10.5.8中未显示的MIME类型

时间:2013-07-23 16:34:31

标签: macos coffeescript mime-types

我正在尝试通过表单上传csv文件,但在Mac OS X 10.5.8上遇到了问题。 这是相关的代码:

template = Handlebars.compile '''
<form action="/dashboard/csv-upload/" enctype="multipart/form-data" method="post" class="csv-upload">
 <p>
   <label for="id_uploaded_file" style="float:left;">Upload a CSV file:</label>
   <input class="span2" name="uploaded_file" id="id_uploaded_file" type="file">
 </p>
</form>
'''

class exports.uploadController extends Backbone.View
  el: '#main-container'

  events:
    'submit form.csv-upload' : '_csvUpload'

  initialize: () =>
    @render()

  render: () =>
    return @ if @isRendered
    @isRendered = true

  _csvUpload : (e) =>
    e.preventDefault()
    file = @$('#id_uploaded_file')[0].files[0]
    if not file
        alert "Please select a file to upload, first."
        return false
    console.log(file.type)
    if file.type != "text/csv" and file.type != "text/plain"
        alert "Please upload a CSV or TXT file"
        return false

我遇到的问题是,即使我上传.csv文件,我也会在Mac OS X 10.5.8上收到“请上传CSV或TXT文件”错误。 console.log返回一个空字符串。这是一个截图: error screenshot

我尝试在Google上搜索,但没有找到任何内容。我也尝试过Safari和Chrome。在OS X 10.5.8上,File对象是否没有展示类型属性?

1 个答案:

答案 0 :(得分:2)

在我的(Windows)系统上.csv文件被映射到“application / vnd.ms-excel”MIME类型,因此这段代码也会在我的计算机上失败。在Windows上,根据用户设置的默认应用程序填写mime类型,该应用程序映射到HKEY_CLASSES_ROOT \ MIME \ Database \ Content Type中的注册表项。无法识别的文件类型以type =“”返回(如您所见)。 It looks like things behave similarly in OSX

我认为最好的办法就是检查文件是否以“.csv”结尾。然后,您的服务器端代码可以检查它是否是有效的csv文件,如果不是则返回错误。