繁体   English   中英

如何仅使用Java将CSV文件上传到服务器

[英]How to upload only csv files into the server in Java

我有一个需要上传csv文件的应用程序。

一切正常。 我正在成功上传扩展名为.csv的文件。

现在这是问题所在。 有人可能会尝试通过将扩展名更改为.csv来上传exe文件并上传到服务器。 完美上传。 有人建议我使用mimetype上传文件。 我遵循教程。

我正在为csv文件获取mimetype null

因此,您能帮我如何仅上载csv文件吗?

提前致谢

好吧,你没有错。 您需要进行某种类型的文件检查,而不仅仅是信任文件扩展名。

您必须自己编写程序,或者使用第三方库(这是您正在做的事情)。

如果您使用第三方框架,则必须遇到配置问题。 从您的描述中我看不出是什么问题,因为我不知道图书馆。

如果您仅对识别CSV文件感兴趣,我建议您至少了解并可以控制的简单方法。 如这种方法:

假设CSV文件由0..n行组成,且行数相同。 行,以下列字符之一分隔:

除非有人知道您的实现故意地攻击您的系统,否则EXE文件不太可能具有这种结构。

阅读前两行。

在正则表达式([,;])上拆分它们。

检查结果是否具有相同数量的元素。

为了提高安全性,请检查它们是否在同一字符上分开。

即使您设置了mimetype,我猜也只能由文件扩展名决定。 因此设置.csv最有可能仍会绕过它。

如果您发现除字符数据以外的任何其他信息引发错误或忽略文件,我将只是读取ASCII数据文件。 循环并通过数字范围进行比较,或者您可以将其读取为字符串并使用[^\\\\p{ASCII}]等正则表达式

据我所知,您不能阻止某人将任何文件类型上传到您的服务器,特别是由于您所说的诸如更改扩展名之类的问题。 您唯一的可能性是,在收到文件后,尝试将其解析为* .csv。 如果成功解析,则将其存储在存储库中,并显示一条成功消息,否则,您将忽略该文件,并显示一条错误消息。

显然,您可以使用Javascript解析csv文件客户端,但是您应该始终验证文件服务器端。

Myme类型仅告诉您的服务器需要什么类型,但这不会阻止某人向您发送非csv文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM