django - 如何检查文件是否为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')
解决方案
取决于这需要有多安全。最简单的步骤就是限制上传 HTML 字段的扩展类型。
<input type="file" accept=".csv" />
显然,任何人都可以将扩展名 .csv 命名为进行环游,但任何仅检查扩展名的解决方案都是这种情况。
推荐阅读
- php - 当 codeigniter 与多个数据库表连接时显示错误
- docker - chrome 启动失败:在 macos 上的 docker 容器中异常退出
- c++ - 解决C/C++库版本冲突,主要在Linux上
- regex - Bash:正则表达式:匹配字符串是否为 rsync 的远程主机
- python - 为什么 G = H'*H 在 H 是全列秩的 python 中不是正定的?
- reactjs - 如何在反应材料表中更改自由动作图标的位置
- python - Heroku 在本地工作,但在部署时崩溃 - Flask
- python - 如何从用户那里获取输入数字并在用python打印之前对其进行排序
- spring-boot - Spring Boot 2 WebSockets 连接意外丢失
- c# - 在 c# 中调整图像大小时调整图像中组件的大小