首页 > 解决方案 > 如何检查文件是否为csv?

问题描述

我有一个 django 视图函数,可以将 csv 转换为另一种分隔符格式。但是,我只想转换 csv 文件并拒绝其他文件。

def index(request):
    csv_form = ''
    if request.method == 'POST':
        csv_form = CsvForm(request.POST, request.FILES)
        if csv_form.is_valid():
            csv_file = TextIOWrapper(request.FILES['csv_file'].file, encoding='ascii', errors='replace')
            #other actions

我不能使用下面的代码,因为它只适用于二进制文件,但 csv 模块想要使用文本模式文件。仅使用 csv 文件的任何替代方法。

if not csv_file.name.endswith('.csv'):
    messages.error(request, 'THIS IS NOT A CSV FILE')

标签: djangocsvdjango-viewsdjango-formsfile-handling

解决方案


取决于这需要有多安全。最简单的步骤就是限制上传 HTML 字段的扩展类型。

<input type="file" accept=".csv" />

显然,任何人都可以将扩展名 .csv 命名为进行环游,但任何仅检查扩展名的解决方案都是这种情况。


推荐阅读