DropZone:如何接受 .csv 文件?
Posted
技术标签:
【中文标题】DropZone:如何接受 .csv 文件?【英文标题】:DropZone: How to Accept .csv Files? 【发布时间】:2020-06-05 09:42:01 【问题描述】:我已经阅读了很多关于 SO 的答案,大多数人建议使用 acceptedFiles
属性来指定接受的 mime 类型。
但是,the DropZone docs say:
Mime 类型确定跨平台不可靠。 CSV 文件, 例如,在 macOS 下报告为 text/plain,但报告为 Windows下的application/vnd.ms-excel。在某些情况下可能没有 完全是一个 mime 类型。
我正在尝试上传一个 .csv 文件,并且(使用 material-ui-dropzone
),到目前为止我已经尝试过:
<Dropzone
acceptedFiles=['.csv', 'text/*']
showPreviews=true
showFileNamesInPreview=true
/>
<Dropzone
acceptedFiles='.csv', 'text/*'
showPreviews=true
showFileNamesInPreview=true
/>
<Dropzone
acceptedFiles='.csv', 'text/csv'
showPreviews=true
showFileNamesInPreview=true
/>
...等等,但到目前为止都没有工作:
打开文件对话框将.csv
文件显示为灰色
将 .csv
文件拖放到 DropZone 会收到“文件 SeriesNotes.csv 被拒绝。不支持文件类型”。留言
为material-ui-dropzone
(或任何版本的 DropZone)解决此问题的正确方法是什么?
【问题讨论】:
【参考方案1】:经过多次反复试验,这对我有用。
acceptedFiles=[".csv, text/csv, application/vnd.ms-excel, application/csv, text/x-csv, application/x-csv, text/comma-separated-values, text/x-comma-separated-values"]
windows 上的主要文件是 .csv,其余的以防万一。
【讨论】:
这很好用,注意到最好添加 1 元素数组,就像使用的这个答案一样,而不是在每个数组元素中以不同的方式分隔它们 accept: "text/plain, application/vnd.ms-excel" --> 这对我来说适用于 csv 和文本文件,但它也接受 .xls 文件,这是我试图避免的.有什么建议?编辑:据我所知,application/vnd.ms-excel 是 .csv 和 .xls 文件的接受标准。其他参数并没有真正做任何事情。您能否在最后验证这是否也是如此?我遇到了排除问题 :如果我删除了 acceptapplication/vnd.ms-excel,它会正确排除 .xls 和 .xlsx 文件,并且只接受 .csv 文件。但是,在 onHover 上,它显示为不可接受的文件类型。对不起,如果我让你感到困惑。将找到解决方案并在此处更新 谢谢@user1767752,这对我来说很好!以上是关于DropZone:如何接受 .csv 文件?的主要内容,如果未能解决你的问题,请参考以下文章
Dropzone 在对话框中仅显示 CSV 和 XLS 文件
使用 React DropZone 将 CSV 转换为 JSON 客户端